diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-09-01 22:39:41 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-09-01 23:07:54 +0200 |
commit | 4e49163f76946503121493fafd6c0fe7b5bde030 (patch) | |
tree | fda762e81d9d0c65b7daf8d83e401f7910a8afbd | |
parent | 2a75b0b63dbf123023c1c7ae99cf01a3866612a1 (diff) | |
download | gnu-guix-4e49163f76946503121493fafd6c0fe7b5bde030.tar gnu-guix-4e49163f76946503121493fafd6c0fe7b5bde030.tar.gz |
guix build: Rewrite '--with-input' in terms of 'package-input-rewriting'.
* guix/scripts/build.scm (transform-package-inputs): Rewrite in terms of
'package-input-rewriting'.
-rw-r--r-- | guix/scripts/build.scm | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 9a113b4ebe..86b95b4075 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -193,33 +193,17 @@ of \"guile\"." (map (lambda (spec) (match (string-tokenize spec not-equal) ((old new) - (cons old (specification->package new))) + (cons (specification->package old) + (specification->package new))) (_ (leave (_ "invalid replacement specification: ~s~%") spec)))) replacement-specs)) - (define (rewrite input) - (match input - ((label (? package? package) outputs ...) - (match (assoc-ref replacements (package-name package)) - (#f (cons* label (replace package) outputs)) - (new (cons* label new outputs)))) - (_ - input))) - - (define replace - (memoize ;XXX: use eq? - (lambda (p) - (package - (inherit p) - (inputs (map rewrite (package-inputs p))) - (native-inputs (map rewrite (package-native-inputs p))) - (propagated-inputs (map rewrite (package-propagated-inputs p))))))) - - (lambda (store obj) - (if (package? obj) - (replace obj) - obj))) + (let ((rewrite (package-input-rewriting replacements))) + (lambda (store obj) + (if (package? obj) + (rewrite obj) + obj)))) (define %transformations ;; Transformations that can be applied to things to build. The car is the |