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'.
This commit is contained in:
Ludovic Courtès 2016-09-01 22:39:41 +02:00
parent 2a75b0b63d
commit 4e49163f76
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 7 additions and 23 deletions

View File

@ -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