about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ravanan/command-line-tool.scm10
1 files changed, 9 insertions, 1 deletions
diff --git a/ravanan/command-line-tool.scm b/ravanan/command-line-tool.scm
index 84b6421..137f702 100644
--- a/ravanan/command-line-tool.scm
+++ b/ravanan/command-line-tool.scm
@@ -493,8 +493,16 @@ The returned G-expression will reference an @code{inputs-directory} variable."
      ((eq? (object-type input)
            'File)
       #~,(let ((path-in-inputs-directory
-                (expand-file-name #$(basename (assoc-ref input "path"))
+                ;; Input files may have the same filename. So, we take the
+                ;; additional precaution of copying input files into their own
+                ;; hash-prefixed subdirectories, just like they are in the
+                ;; ravanan store.
+                (expand-file-name #$(file-name-join
+                                     (take-right (file-name-split
+                                                  (assoc-ref input "path"))
+                                                 2))
                                   inputs-directory)))
+           (mkdir (file-dirname path-in-inputs-directory))
            (copy-file #$(assoc-ref input "path")
                       path-in-inputs-directory)
            (maybe-assoc-set '#$input