diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-12-13 17:43:02 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-12-13 17:48:25 +0100 |
commit | aca2defe0172868295941fd9f0e97886f6e9b2d4 (patch) | |
tree | 2eb08a14c1f0743761aaf5125f5319edff973176 | |
parent | 148a03b971b0225ee17720c8e0b69245d2b82130 (diff) | |
download | guix-aca2defe0172868295941fd9f0e97886f6e9b2d4.tar guix-aca2defe0172868295941fd9f0e97886f6e9b2d4.tar.gz |
packages: 'modify-inputs' preserves and introduces input labels if needed.
Fixes a bug whereby, in an expression like this:
(modify-inputs lst
(delete ...)
(prepend ...))
the 'delete' clause would have no effect because 'prepend' would pass it
a label-less input list.
* guix/packages.scm (inputs-sans-labels): Remove.
(modify-inputs): In the 'prepend' and 'append' cases, preserve/add input
labels instead of removing them.
-rw-r--r-- | guix/packages.scm | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index b3c5a00011..b00fa2f702 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1083,13 +1083,6 @@ otherwise." otherwise." (lookup-input (package-direct-inputs package) name)) -(define (inputs-sans-labels inputs) - "Return INPUTS stripped of any input labels." - (map (match-lambda - ((label obj) obj) - ((label obj output) `(,obj ,output))) - inputs)) - (define (replace-input name replacement inputs) "Replace input NAME by REPLACEMENT within INPUTS." (map (lambda (input) @@ -1124,7 +1117,10 @@ inputs of Coreutils and adds libcap: (delete \"gmp\" \"acl\") (append libcap)) -Other types of clauses include 'prepend' and 'replace'." +Other types of clauses include 'prepend' and 'replace'. + +The first argument must be a labeled input list; the result is also a labeled +input list." ;; Note: This macro hides the fact that INPUTS, as returned by ;; 'package-inputs' & co., is actually an alist with labels. Eventually, ;; it will operate on list of inputs without labels. @@ -1135,10 +1131,10 @@ Other types of clauses include 'prepend' and 'replace'." (modify-inputs (fold alist-delete inputs (list names ...)) clauses ...)) ((_ inputs (prepend lst ...) clauses ...) - (modify-inputs (append (list lst ...) (inputs-sans-labels inputs)) + (modify-inputs (append (map add-input-label (list lst ...)) inputs) clauses ...)) ((_ inputs (append lst ...) clauses ...) - (modify-inputs (append (inputs-sans-labels inputs) (list lst ...)) + (modify-inputs (append inputs (map add-input-label (list lst ...))) clauses ...)) ((_ inputs (replace name replacement) clauses ...) (modify-inputs (replace-input name replacement inputs) |