summary refs log tree commit diff
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*))))