aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-06-11 23:05:23 +0200
committerLudovic Courtès <ludo@gnu.org>2017-06-11 23:05:23 +0200
commitc08ea55e7ec25261e4596bf6726a83c1ed056b94 (patch)
tree62c86988b26ccca3b8cdebaf07b201f4d0f904e4
parentc580ff672425ad7cd6a388178fa5857b6aa15d5f (diff)
downloadguix-c08ea55e7ec25261e4596bf6726a83c1ed056b94.tar
guix-c08ea55e7ec25261e4596bf6726a83c1ed056b94.tar.gz
packages: Add 'specifications->manifest'.
* gnu/packages.scm (specifications->manifest): New procedure. * doc/guix.texi (Invoking guix package): Change example from using '(compose list specification->package+output)' to using 'specifications->manifest'.
-rw-r--r--doc/guix.texi9
-rw-r--r--gnu/packages.scm12
2 files changed, 15 insertions, 6 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 87aaae8545..83f20c8598 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1742,18 +1742,17 @@ of packages:
(list guile-2.0 "debug")))
@end example
-@findex specification->package+output
+@findex specifications->manifest
In this example we have to know which modules define the @code{emacs}
and @code{guile-2.0} variables to provide the right
@code{use-package-modules} line, which can be cumbersome. We can
instead provide regular package specifications and let
-@code{specification->package-output} look up the corresponding package
+@code{specifications->manifest} look up the corresponding package
objects, like this:
@example
-(packages->manifest
- (map (compose list specification->package+output)
- '("emacs" "guile@@2.0" "guile@@2.0:debug")))
+(specifications->manifest
+ '("emacs" "guile@@2.2" "guile@@2.2:debug"))
@end example
@item --roll-back
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 57907155fb..5629061788 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -29,6 +29,7 @@
#:use-module ((guix build utils)
#:select ((package-name->name+version
. hyphen-separated-name->name+version)))
+ #:autoload (guix profiles) (packages->manifest)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@@ -53,7 +54,8 @@
find-newest-available-packages
specification->package
- specification->package+output))
+ specification->package+output
+ specifications->manifest))
;;; Commentary:
;;;
@@ -278,3 +280,11 @@ version; if SPEC does not specify an output, return OUTPUT."
(leave (G_ "package `~a' lacks output `~a'~%")
(package-full-name package)
sub-drv))))))
+
+(define (specifications->manifest specs)
+ "Given SPECS, a list of specifications such as \"emacs@25.2\" or
+\"guile:debug\", return a profile manifest."
+ ;; This procedure exists mostly so users of 'guix package -m' don't have to
+ ;; fiddle with multiple-value returns.
+ (packages->manifest
+ (map (compose list specification->package+output) specs)))