diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-06-11 23:05:23 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-06-11 23:05:23 +0200 |
commit | c08ea55e7ec25261e4596bf6726a83c1ed056b94 (patch) | |
tree | 62c86988b26ccca3b8cdebaf07b201f4d0f904e4 | |
parent | c580ff672425ad7cd6a388178fa5857b6aa15d5f (diff) | |
download | 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.texi | 9 | ||||
-rw-r--r-- | gnu/packages.scm | 12 |
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))) |