aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-02-16 01:37:26 +0100
committerLudovic Courtès <ludo@gnu.org>2013-02-16 01:37:26 +0100
commitd510ab46144b4c7cb27e383f0031c9b363335cd3 (patch)
treedb6f430c9f286a1dc4593a438aa6b2915b8a99fb
parent0228826262b2fd01371cdaf78cfe22371b18f2d7 (diff)
downloadguix-d510ab46144b4c7cb27e383f0031c9b363335cd3.tar.gz
guix-d510ab46144b4c7cb27e383f0031c9b363335cd3.zip
packages: Add `package-output'.
* guix/packages.scm (package-output): New procedure. * tests/packages.scm ("package-output"): New test.
-rw-r--r--guix/packages.scm13
-rw-r--r--tests/packages.scm9
2 files changed, 21 insertions, 1 deletions
diff --git a/guix/packages.scm b/guix/packages.scm
index b372f03818..51984baa3b 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -20,10 +20,12 @@
#:use-module (guix utils)
#:use-module (guix store)
#:use-module (guix base32)
+ #:use-module (guix derivations)
#:use-module (guix build-system)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9 gnu)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:re-export (%current-system)
@@ -62,6 +64,7 @@
package-source-derivation
package-derivation
package-cross-derivation
+ package-output
&package-error
package-error?
@@ -305,3 +308,13 @@ PACKAGE for SYSTEM."
(define* (package-cross-derivation store package)
;; TODO
#f)
+
+(define* (package-output store package output
+ #:optional (system (%current-system)))
+ "Return the output path of PACKAGE's OUTPUT for SYSTEM---where OUTPUT is the
+symbolic output name, such as \"out\". Note that this procedure calls
+`package-derivation', which is costly."
+ (let-values (((_ drv)
+ (package-derivation store package system)))
+ (derivation-output-path
+ (assoc-ref (derivation-outputs drv) output))))
diff --git a/tests/packages.scm b/tests/packages.scm
index 32ee558518..f441532d22 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -71,7 +71,7 @@
("d" ,d) ("d/x" "something.drv"))
(pk 'x (package-transitive-inputs e))))))
-(test-skip (if (not %store) 3 0))
+(test-skip (if (not %store) 4 0))
(test-assert "return values"
(let-values (((drv-path drv)
@@ -79,6 +79,13 @@
(and (derivation-path? drv-path)
(derivation? drv))))
+(test-assert "package-output"
+ (let* ((package (dummy-package "p"))
+ (drv-path (package-derivation %store package)))
+ (and (derivation-path? drv-path)
+ (string=? (derivation-path->output-path drv-path)
+ (package-output %store package "out")))))
+
(test-assert "trivial"
(let* ((p (package (inherit (dummy-package "trivial"))
(build-system trivial-build-system)