aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-01-11 11:55:51 +0100
committerLudovic Courtès <ludo@gnu.org>2017-01-11 11:58:21 +0100
commitaa042770da2fe6411089a965ea8b2219a99d3448 (patch)
treeed07d30eb4b79e5f27b34e44b28b75aa0288532b
parent69323016d31547356c7322682943b22af4df74ed (diff)
downloadgnu-guix-aa042770da2fe6411089a965ea8b2219a99d3448.tar
gnu-guix-aa042770da2fe6411089a965ea8b2219a99d3448.tar.gz
guix package: Fix version and output for 'guix package -i /gnu/store/…'.
* guix/utils.scm (package-name->name+version): Add optional 'delimiter' parameter. * guix/scripts/package.scm (store-item->manifest-entry): Pass #\- as the delimiter for 'package-name->name+version'. Use "out" instead of #f for the 'output' field. * tests/guix-package.sh: Add test.
-rw-r--r--guix/scripts/package.scm7
-rw-r--r--guix/utils.scm10
-rw-r--r--tests/guix-package.sh10
3 files changed, 19 insertions, 8 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 90e7fa2298..9e5b7f3c75 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com>
@@ -577,11 +577,12 @@ upgrading, #f otherwise."
(define (store-item->manifest-entry item)
"Return a manifest entry for ITEM, a \"/gnu/store/...\" file name."
(let-values (((name version)
- (package-name->name+version (store-path-package-name item))))
+ (package-name->name+version (store-path-package-name item)
+ #\-)))
(manifest-entry
(name name)
(version version)
- (output #f)
+ (output "out") ;XXX: wild guess
(item item))))
(define (options->installable opts manifest transaction)
diff --git a/guix/utils.scm b/guix/utils.scm
index 06f49daca8..ee06e47fe9 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
@@ -500,11 +500,13 @@ returned by `config.guess'."
;; cross-building to.
(make-parameter #f))
-(define (package-name->name+version spec)
+(define* (package-name->name+version spec
+ #:optional (delimiter #\@))
"Given SPEC, a package name like \"foo@0.9.1b\", return two values: \"foo\"
and \"0.9.1b\". When the version part is unavailable, SPEC and #f are
-returned. Both parts must not contain any '@'."
- (match (string-rindex spec #\@)
+returned. Both parts must not contain any '@'. Optionally, DELIMITER can be
+a character other than '@'."
+ (match (string-rindex spec delimiter)
(#f (values spec #f))
(idx (values (substring spec 0 idx)
(substring spec (1+ idx))))))
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 68a1946aa0..5ecb33193f 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
#
# This file is part of GNU Guix.
@@ -39,6 +39,14 @@ trap 'rm -f "$profile" "$profile-"[0-9]* "$tmpfile"; rm -rf "$module_dir" t-home
if guix package --bootstrap -e +;
then false; else true; fi
+# Install a store item and make sure the version and output in the manifest
+# are correct.
+guix package --bootstrap -p "$profile" -i `guix build guile-bootstrap`
+test "`guix package -A guile-bootstrap | cut -f 1-2`" \
+ = "`guix package -p "$profile" -I | cut -f 1-2`"
+test "`guix package -p "$profile" -I | cut -f 3`" = "out"
+rm "$profile"
+
guix package --bootstrap -p "$profile" -i guile-bootstrap
test -L "$profile" && test -L "$profile-1-link"
test -f "$profile/bin/guile"