guix-commits
[Top][All Lists]
Advanced

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

01/05: guix build: Extract '--with-input' replacement spec parsing.


From: Ludovic Courtès
Subject: 01/05: guix build: Extract '--with-input' replacement spec parsing.
Date: Mon, 17 Oct 2016 22:01:55 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 5cf01aa53f67a226198cba63fd952a9c9e5aa842
Author: Ludovic Courtès <address@hidden>
Date:   Mon Oct 17 22:43:49 2016 +0200

    guix build: Extract '--with-input' replacement spec parsing.
    
    * guix/scripts/build.scm (evaluate-replacement-specs): New procedure.
    (transform-package-inputs)[not-equal]: Remove.
    [replacements]: Define in terms of 'evaluate-replacement-specs'.
---
 guix/scripts/build.scm |   40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index b64138e..6449931 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -179,27 +179,31 @@ matching URIs given in SOURCES."
         (_
          obj)))))
 
-(define (transform-package-inputs replacement-specs)
-  "Return a procedure that, when passed a package, replaces its direct
-dependencies according to REPLACEMENT-SPECS.  REPLACEMENT-SPECS is a list of
-strings like \"address@hidden" meaning that, any direct dependency on a
-package called \"guile\" must be replaced with a dependency on a version 2.1
-of \"guile\"."
+(define (evaluate-replacement-specs specs proc)
+  "Parse SPECS, a list of strings like \"address@hidden", and invoke PROC on
+each package pair specified by SPECS.  Return the resulting list.  Raise an
+error if an element of SPECS uses invalid syntax, or if a package it refers to
+could not be found."
   (define not-equal
     (char-set-complement (char-set #\=)))
 
-  (define replacements
-    ;; List of name/package pairs.
-    (map (lambda (spec)
-           (match (string-tokenize spec not-equal)
-             ((old new)
-              (cons (specification->package old)
-                    (specification->package new)))
-             (x
-              (leave (_ "invalid replacement specification: ~s~%") spec))))
-         replacement-specs))
-
-  (let ((rewrite (package-input-rewriting replacements)))
+  (map (lambda (spec)
+         (match (string-tokenize spec not-equal)
+           ((old new)
+            (proc (specification->package old)
+                  (specification->package new)))
+           (x
+            (leave (_ "invalid replacement specification: ~s~%") spec))))
+       specs))
+
+(define (transform-package-inputs replacement-specs)
+  "Return a procedure that, when passed a package, replaces its direct
+dependencies according to REPLACEMENT-SPECS.  REPLACEMENT-SPECS is a list of
+strings like \"address@hidden" meaning that, any dependency on a package
+called \"guile\" must be replaced with a dependency on a version 2.1 of
+\"guile\"."
+  (let* ((replacements (evaluate-replacement-specs replacement-specs cons))
+         (rewrite      (package-input-rewriting replacements)))
     (lambda (store obj)
       (if (package? obj)
           (rewrite obj)



reply via email to

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