* gnu/packages.scm (replace-input): New procedure. --- gnu/packages.scm | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/gnu/packages.scm b/gnu/packages.scm index 0aa289d56..2535e10b1 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -53,7 +53,9 @@ find-newest-available-packages specification->package - specification->package+output)) + specification->package+output + + replace-input)) ;;; Commentary: ;;; @@ -356,3 +358,26 @@ version; if SPEC does not specify an output, return OUTPUT." (leave (_ "package `~a' lacks output `~a'~%") (package-full-name package) sub-drv)))))) + + +;;; +;;; Package utilities. +;;; + +(define (replace-input pkg name replacement) + "Returns a package with all inputs of NAME replaced with REPLACEMENT. Is +usefull for resolving circular dependencies." + (define replace + (match-lambda + ((tag input) + (if (string=? tag name) + (list name replacement) + (list tag (replace-input input name replacement)))))) + (package + (inherit pkg) + (inputs + (map replace (package-inputs pkg))) + (native-inputs + (map replace (package-native-inputs pkg))) + (propagated-inputs + (map replace (package-propagated-inputs pkg))))) -- 2.11.0