summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/build/union.scm10
-rw-r--r--tests/union.scm7
2 files changed, 10 insertions, 7 deletions
diff --git a/guix/build/union.scm b/guix/build/union.scm
index 234964dba5..a6a4450180 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -150,8 +150,9 @@ the DIRECTORIES."
(mkdir output)
(let loop ((tree (delete-duplicate-leaves
- (tree-union (append-map (compose tree-leaves file-tree)
- directories))
+ (cons "."
+ (tree-union (append-map (compose tree-leaves file-tree)
+ directories)))
leaf=?
resolve-collision))
(dir '()))
@@ -165,8 +166,9 @@ the DIRECTORIES."
(symlink tree target)))
(((? string? subdir) leaves ...)
;; A sub-directory: create it in OUTPUT, and iterate over LEAVES.
- (let ((dir (string-join dir "/")))
- (mkdir (string-append output "/" dir "/" subdir)))
+ (unless (string=? subdir ".")
+ (let ((dir (string-join dir "/")))
+ (mkdir (string-append output "/" dir "/" subdir))))
(for-each (cute loop <> `(,@dir ,subdir))
leaves))
((leaves ...)
diff --git a/tests/union.scm b/tests/union.scm
index 87450d74fd..9816882101 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -94,9 +94,10 @@
(let* ((inputs (map (match-lambda
((name package)
`(,name ,(package-derivation %store package))))
- (delete-duplicates %bootstrap-inputs
- (lambda (i1 i2)
- (eq? (second i1) (second i2))))))
+
+ ;; Purposefully leave duplicate entries.
+ (append %bootstrap-inputs
+ (take %bootstrap-inputs 3))))
(builder `(begin
(use-modules (guix build union))
(union-build (assoc-ref %outputs "out")