summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/build/union.scm19
1 files changed, 13 insertions, 6 deletions
diff --git a/guix/build/union.scm b/guix/build/union.scm
index a6a4450180..275746d83e 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -137,13 +137,20 @@ the DIRECTORIES."
(define (resolve-collision leaves)
;; LEAVES all have the same basename, so choose one of them.
- (format (current-error-port) "warning: collision encountered: ~{~a ~}~%"
- leaves)
+ (match (delete-duplicates leaves string=?)
+ ((one-and-the-same)
+ ;; LEAVES all actually point to the same file, so nothing to worry
+ ;; about.
+ one-and-the-same)
+ ((and lst (head _ ...))
+ ;; A real collision.
+ (format (current-error-port) "warning: collision encountered: ~{~a ~}~%"
+ lst)
- ;; TODO: Implement smarter strategies.
- (format (current-error-port) "warning: arbitrarily choosing ~a~%"
- (car leaves))
- (car leaves))
+ ;; TODO: Implement smarter strategies.
+ (format (current-error-port) "warning: arbitrarily choosing ~a~%"
+ head)
+ head)))
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)