guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/05: gexp: Add identity compiler for derivations.


From: Ludovic Courtès
Subject: 01/05: gexp: Add identity compiler for derivations.
Date: Sun, 22 Mar 2015 22:43:58 +0000

civodul pushed a commit to branch master
in repository guix.

commit 2924f0d6ce180a9d09eab994efb6a60c61fab3fd
Author: Ludovic Courtès <address@hidden>
Date:   Sat Mar 21 23:13:02 2015 +0100

    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.
---
 guix/gexp.scm |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/guix/gexp.scm b/guix/gexp.scm
index f8646a0..4a2a924 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]