aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-09-01 22:39:41 +0200
committerLudovic Courtès <ludo@gnu.org>2016-09-01 23:07:54 +0200
commit4e49163f76946503121493fafd6c0fe7b5bde030 (patch)
treefda762e81d9d0c65b7daf8d83e401f7910a8afbd
parent2a75b0b63dbf123023c1c7ae99cf01a3866612a1 (diff)
downloadguix-4e49163f76946503121493fafd6c0fe7b5bde030.tar
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.scm30
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