From 079d1273912da55c69113601b48bb704ed354c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 15 Jul 2013 23:33:17 +0200 Subject: [PATCH] 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. --- guix/scripts/package.scm | 13 +++++++++++-- 1 file 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 @@ (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*))))