diff options
-rw-r--r-- | guix/build/union.scm | 10 | ||||
-rw-r--r-- | tests/union.scm | 7 |
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") |