aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-12-13 17:43:02 +0100
committerLudovic Courtès <ludo@gnu.org>2021-12-13 17:48:25 +0100
commitaca2defe0172868295941fd9f0e97886f6e9b2d4 (patch)
tree2eb08a14c1f0743761aaf5125f5319edff973176
parent148a03b971b0225ee17720c8e0b69245d2b82130 (diff)
downloadguix-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.scm16
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)