From 4c09bb5ca96ede1651db3e850094ec8f1136e81f Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 16 May 2025 04:41:21 +0100 Subject: command-line-tool: Copy input files into their own subdirectories. * ravanan/command-line-tool.scm (copy-input-files-gexp): Copy input files into their own subdirectories. --- ravanan/command-line-tool.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3