summaryrefslogtreecommitdiff
path: root/guix/profiles.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-07-26 22:54:40 +0200
committerLudovic Courtès <ludo@gnu.org>2014-07-26 22:57:00 +0200
commit462f5ccade9fd1372e2a7d1e854cd6324ebb4105 (patch)
tree6f804a79074238627c20e307d8569b5f450e0d9b /guix/profiles.scm
parent4ca0b4101d2d15fc41c0a875f09553ded27091bd (diff)
downloadguix-patches-462f5ccade9fd1372e2a7d1e854cd6324ebb4105.tar
guix-patches-462f5ccade9fd1372e2a7d1e854cd6324ebb4105.tar.gz
profiles: Add 'package->manifest-entry'.
Suggested by Alex Kost <alezost@gmail.com>. * guix/scripts/package.scm (options->installable)[package->manifest-entry]: Move to (guix profiles). [package->manifest-entry*]: New procedure. Use it. * guix/profiles.scm (package->manifest-entry): New procedure. * tests/profiles.scm (guile-for-build): New variable. Call '%guile-for-build'. ("profile-derivation"): New test.
Diffstat (limited to 'guix/profiles.scm')
-rw-r--r--guix/profiles.scm17
1 files changed, 17 insertions, 0 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 96c8ca0514..5e69e012f9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -51,6 +51,7 @@
manifest-matching-entries
profile-manifest
+ package->manifest-entry
profile-derivation
generation-number
generation-numbers
@@ -105,6 +106,22 @@
(call-with-input-file file read-manifest)
(manifest '()))))
+(define* (package->manifest-entry package #:optional output)
+ "Return a manifest entry for the OUTPUT of package PACKAGE. When OUTPUT is
+omitted or #f, use the first output of PACKAGE."
+ (let ((deps (map (match-lambda
+ ((label package)
+ `(,package "out"))
+ ((label package output)
+ `(,package ,output)))
+ (package-transitive-propagated-inputs package))))
+ (manifest-entry
+ (name (package-name package))
+ (version (package-version package))
+ (output (or output (car (package-outputs package))))
+ (item package)
+ (dependencies (delete-duplicates deps)))))
+
(define (manifest->gexp manifest)
"Return a representation of MANIFEST as a gexp."
(define (entry->gexp entry)