From f408d8d636ac24d576e9ee91a6c823e0874386ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 25 May 2020 17:33:04 +0200 Subject: [PATCH] self: Optimize 'file-append*' for 'local-file?'. * guix/self.scm (file-append*): Add 'local-file?' case. * guix/gexp.scm (local-file-select?): Export. --- guix/gexp.scm | 1 + guix/self.scm | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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.