guix package: Allow separate install of several outputs of the same package.

* guix/scripts/package.scm (guix-package)[process-actions](same-package?):
  New procedure.  Use it instead of `alist-delete' when filtering out
  duplicate packages from the profile.
This commit is contained in:
Ludovic Courtès 2013-07-15 23:33:17 +02:00
parent 56fbf2629f
commit 079d127391

View file

@ -693,6 +693,12 @@ (define (same? d1 d2)
(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 @@ (define (show-what-to-remove/install remove install dry-run?)
(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*))))