aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/scripts/package.scm13
1 files changed, 11 insertions, 2 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 68869b4cec..5c3947dd63 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -693,6 +693,12 @@ more information.~%"))
(delete-duplicates deps same?))
+ (define (same-package? tuple name out)
+ (match tuple
+ ((tuple-name _ tuple-output _ ...)
+ (and (equal? name tuple-name)
+ (equal? out tuple-output)))))
+
(define (package->tuple p)
;; Convert package P to a tuple.
;; When given a package via `-e', install the first of its
@@ -816,8 +822,11 @@ more information.~%"))
(packages (append install*
(fold (lambda (package result)
(match package
- ((name _ ...)
- (alist-delete name result))))
+ ((name _ out _ ...)
+ (filter (negate
+ (cut same-package? <>
+ name out))
+ result))))
(fold alist-delete installed remove)
install*))))