diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-03-21 23:13:02 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-03-22 23:18:28 +0100 |
commit | 2924f0d6ce180a9d09eab994efb6a60c61fab3fd (patch) | |
tree | 7a89f9f067a131d8ca3f0f9d9d1bf2f77ef77c82 | |
parent | a9a8f0637dc82788ead8f1a6cc02a524464285a6 (diff) | |
download | patches-2924f0d6ce180a9d09eab994efb6a60c61fab3fd.tar patches-2924f0d6ce180a9d09eab994efb6a60c61fab3fd.tar.gz |
gexp: Add identity compiler for derivations.
* guix/gexp.scm (derivation-compiler): New procedure.
(lower-inputs): Remove 'derivation?' case.
(gexp-inputs)[add-reference-inputs]: Likewise.
(gexp->sexp)[reference->sexp]: Likewise.
-rw-r--r-- | guix/gexp.scm | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index f8646a081c..4a2a924a03 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -127,6 +127,12 @@ cross-compiling.)" body ...))) (register-compiler! name))) +(define-gexp-compiler (derivation-compiler (drv derivation?) system target) + ;; Derivations are the lowest-level representation, so this is the identity + ;; compiler. + (with-monad %store-monad + (return drv))) + ;;; ;;; Inputs & outputs. @@ -165,8 +171,6 @@ the cross-compilation target triplet." (with-monad %store-monad (sequence %store-monad (map (match-lambda - ((and ((? derivation?) sub-drv ...) input) - (return input)) ((and ((? struct? thing) sub-drv ...) input) (mlet* %store-monad ((lower -> (lookup-compiler thing)) (drv (lower thing system target))) @@ -262,6 +266,7 @@ The other arguments are as for 'derivation'." (define (graphs-file-names graphs) ;; Return a list of (FILE-NAME . STORE-PATH) pairs made from GRAPHS. (map (match-lambda + ;; TODO: Remove 'derivation?' special cases. ((file-name (? derivation? drv)) (cons file-name (derivation->output-path drv))) ((file-name (? derivation? drv) sub-drv) @@ -348,8 +353,6 @@ The other arguments are as for 'derivation'." references." (define (add-reference-inputs ref result) (match ref - (($ <gexp-input> (? derivation? drv) output) - (cons `(,drv ,output) result)) (($ <gexp-input> (? gexp? exp)) (append (gexp-inputs exp references) result)) (($ <gexp-input> (? string? str)) @@ -411,8 +414,6 @@ and in the current monad setting (system type, etc.)" (define* (reference->sexp ref #:optional native?) (with-monad %store-monad (match ref - (($ <gexp-input> (? derivation? drv) output) - (return (derivation->output-path drv output))) (($ <gexp-output> output) ;; Output file names are not known in advance but the daemon defines ;; an environment variable for each of them at build time, so use |