guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: guix package: Fix version and output for 'guix package -i /gnu/s


From: Ludovic Courtès
Subject: 02/02: guix package: Fix version and output for 'guix package -i /gnu/store/…'.
Date: Wed, 11 Jan 2017 11:05:11 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit aa042770da2fe6411089a965ea8b2219a99d3448
Author: Ludovic Courtès <address@hidden>
Date:   Wed Jan 11 11:55:51 2017 +0100

    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.
---
 guix/scripts/package.scm |    7 ++++---
 guix/utils.scm           |   10 ++++++----
 tests/guix-package.sh    |   10 +++++++++-
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 90e7fa2..9e5b7f3 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 <address@hidden>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès 
<address@hidden>
 ;;; Copyright © 2013 Nikita Karetnikov <address@hidden>
 ;;; Copyright © 2013, 2015 Mark H Weaver <address@hidden>
 ;;; Copyright © 2014, 2016 Alex Kost <address@hidden>
@@ -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 06f49da..ee06e47 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 <address@hidden>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès 
<address@hidden>
 ;;; Copyright © 2013, 2014, 2015 Mark H Weaver <address@hidden>
 ;;; Copyright © 2014 Eric Bavier <address@hidden>
 ;;; Copyright © 2014 Ian Denhardt <address@hidden>
@@ -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 \"address@hidden", 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 68a1946..5ecb331 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 <address@hidden>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès 
<address@hidden>
 # Copyright © 2013 Nikita Karetnikov <address@hidden>
 #
 # 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"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]