diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-05-25 17:33:04 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-05-25 23:00:30 +0200 |
commit | f408d8d636ac24d576e9ee91a6c823e0874386ef (patch) | |
tree | 6ba65dbcb1ca9d4e0b649b670f4c18a3b2fb1b67 | |
parent | 8c23d7a15e90481f0b4ab2ba9bd178d68e7affaa (diff) | |
download | guix-f408d8d636ac24d576e9ee91a6c823e0874386ef.tar.gz |
self: Optimize 'file-append*' for 'local-file?'.
* guix/self.scm (file-append*): Add 'local-file?' case. * guix/gexp.scm (local-file-select?): Export.
-rw-r--r-- | guix/gexp.scm | 1 | ||||
-rw-r--r-- | guix/self.scm | 10 |
2 files changed, 10 insertions, 1 deletions
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 <local-file>. + (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. |