summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-06-12 23:30:00 +0200
committerLudovic Courtès <ludo@gnu.org>2012-06-12 23:30:00 +0200
commit224f7ad6a3627df538a345ae3d3e8dd3494ecab2 (patch)
tree9c9ae63b3ce1e5d0b74ad4ad794270842deb9e11
parentd1b1c4249a1747262e48d15512ee5435da068182 (diff)
downloadguix-224f7ad6a3627df538a345ae3d3e8dd3494ecab2.tar.gz
Fix `imported-files' for files with a common prefix.
* guix/derivations.scm (imported-files)[builder]: For TAIL, check
  whether it exists before (mkdir TAIL).

* tests/derivations.scm ("imported-files"): Add file with a common
  prefix.
-rw-r--r--guix/derivations.scm3
-rw-r--r--tests/derivations.scm3
2 files changed, 4 insertions, 2 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 47023f566c..9f5ab16d6d 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -412,7 +412,8 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
                                                        `(false-if-exception
                                                          (mkdir ,d)))
                                                      head)
-                                                `((mkdir ,tail)))))
+                                                `((or (file-exists? ,tail)
+                                                      (mkdir ,tail))))))
                                      `((symlink ,store-path ,final-path)))))
                            files))))
     (build-expression->derivation store name (%current-system)
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 3f48289380..d39dacd9a0 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -221,7 +221,8 @@
   (let* ((files    `(("x"     . ,(search-path %load-path "ice-9/q.scm"))
                      ("a/b/c" . ,(search-path %load-path
                                               "guix/derivations.scm"))
-                     ("p/q"   . ,(search-path %load-path "guix.scm"))))
+                     ("p/q"   . ,(search-path %load-path "guix.scm"))
+                     ("p/z"   . ,(search-path %load-path "guix/store.scm"))))
          (drv-path (imported-files %store files)))
     (and (build-derivations %store (list drv-path))
          (let ((dir (derivation-path->output-path drv-path)))