union: Don't warn when colliding leaves point to the same file.

* guix/build/union.scm (union-build)[resolve-collision]: Pass LEAVES
  through `delete-duplicates'; warn iff the result contains more than
  one item.
This commit is contained in:
Ludovic Courtès 2013-02-06 22:52:50 +01:00
parent 6211223021
commit 1be77eac08

View file

@ -137,13 +137,20 @@ (define (leaf=? a b)
(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)