mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
packages: 'package-input-rewriting' can take a promise.
* guix/packages.scm (package-input-rewriting): Allow REPLACEMENTS to be a promise. * gnu/packages/guile.scm (package-for-guile-2.0): Delay the first argument to 'package-input-rewriting'.
This commit is contained in:
parent
796a4491fd
commit
7d2be1277b
2 changed files with 13 additions and 5 deletions
|
@ -391,7 +391,7 @@ (define (guile-variant-package-name prefix)
|
|||
(define package-for-guile-2.0
|
||||
;; A procedure that rewrites the dependency tree of the given package to use
|
||||
;; GUILE-2.0 instead of GUILE-2.2.
|
||||
(package-input-rewriting `((,guile-2.2 . ,guile-2.0))
|
||||
(package-input-rewriting (delay `((,guile-2.2 . ,guile-2.0)))
|
||||
(guile-variant-package-name "guile2.0")))
|
||||
|
||||
(define-public guile-for-guile-emacs
|
||||
|
|
|
@ -855,19 +855,27 @@ (define* (package-input-rewriting replacements
|
|||
#:optional (rewrite-name identity))
|
||||
"Return a procedure that, when passed a package, replaces its direct and
|
||||
indirect dependencies (but not its implicit inputs) according to REPLACEMENTS.
|
||||
REPLACEMENTS is a list of package pairs; the first element of each pair is the
|
||||
package to replace, and the second one is the replacement.
|
||||
REPLACEMENTS is a list of package pairs or a promise thereof; the first
|
||||
element of each pair is the package to replace, and the second one is the
|
||||
replacement.
|
||||
|
||||
Optionally, REWRITE-NAME is a one-argument procedure that takes the name of a
|
||||
package and returns its new name after rewrite."
|
||||
(define (rewrite p)
|
||||
(match (assq-ref replacements p)
|
||||
(match (assq-ref (if (promise? replacements)
|
||||
(force replacements)
|
||||
replacements)
|
||||
p)
|
||||
(#f (package
|
||||
(inherit p)
|
||||
(name (rewrite-name (package-name p)))))
|
||||
(new new)))
|
||||
|
||||
(package-mapping rewrite (cut assq <> replacements)))
|
||||
(package-mapping rewrite
|
||||
(lambda (package)
|
||||
(assq package (if (promise? replacements)
|
||||
(force replacements)
|
||||
replacements)))))
|
||||
|
||||
(define-syntax-rule (package/inherit p overrides ...)
|
||||
"Like (package (inherit P) OVERRIDES ...), except that the same
|
||||
|
|
Loading…
Reference in a new issue