diff --git a/guix/gexp.scm b/guix/gexp.scm index 9e193c76c4..510a1d54c3 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -51,6 +51,7 @@ local-file-absolute-file-name local-file-name local-file-recursive? + local-file-select? plain-file plain-file? diff --git a/guix/self.scm b/guix/self.scm index a9568049b2..60fe6e6b01 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -213,7 +213,15 @@ record with the new file name." ;; itself. (local-file (string-append item "/" file) #:recursive? recursive?)) - ;; TODO: Add 'local-file?' case. + ((? local-file? base) + ;; Likewise, but with a . + (if (local-file-recursive? base) + (local-file (string-append (local-file-absolute-file-name base) + "/" file) + (basename file) + #:recursive? recursive? + #:select? (local-file-select? base)) + (file-append base file))) (_ ;; In this case, anything that refers to the result also depends on ITEM, ;; which isn't great.