summaryrefslogtreecommitdiff
path: root/guix/derivations.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-06-10 22:10:21 +0200
committerLudovic Courtès <ludo@gnu.org>2019-06-10 22:42:59 +0200
commitf8a9f99cd602ce1dc5307cb0c21ae718ad8796bb (patch)
treedca6c6f3b0b95083be5d37e636d3c338f109eeba /guix/derivations.scm
parent416a7c69f1d788670f0c4a7ffaed3e032eadc91d (diff)
downloadpatches-f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb.tar
patches-f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb.tar.gz
store: 'build-things' accepts derivation/output pairs.
This allows callers to request the substitution of a single derivation output. * guix/store.scm (build-things): Accept derivation/output pairs among THINGS. * guix/derivations.scm (build-derivations): Likewise. * tests/store.scm ("substitute + build-things with specific output"): New test. * tests/derivations.scm ("build-derivations with specific output"): New test. * doc/guix.texi (The Store): Adjust accordingly.
Diffstat (limited to 'guix/derivations.scm')
-rw-r--r--guix/derivations.scm13
1 files changed, 9 insertions, 4 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 7a5c3bca94..cad77bdb06 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -982,12 +982,17 @@ recursively."
(define* (build-derivations store derivations
#:optional (mode (build-mode normal)))
- "Build DERIVATIONS, a list of <derivation> objects or .drv file names, using
-the specified MODE."
+ "Build DERIVATIONS, a list of <derivation> objects, .drv file names, or
+derivation/output pairs, using the specified MODE."
(build-things store (map (match-lambda
+ ((? derivation? drv)
+ (derivation-file-name drv))
((? string? file) file)
- ((and drv ($ <derivation>))
- (derivation-file-name drv)))
+ (((? derivation? drv) . output)
+ (cons (derivation-file-name drv)
+ output))
+ (((? string? file) . output)
+ (cons file output)))
derivations)
mode))