[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)