summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-09-03 00:17:27 +0200
committerLudovic Courtès <ludo@gnu.org>2016-09-05 00:06:47 +0200
commit14d5ca2e2e57643b6b4acfb980b18b7474c27e7b (patch)
treede841e553deb26a507e08f32615cbdda9c40e50f
parentf7c9b01f29a3e7a347b9b47db06a7cf1746df521 (diff)
downloadguix-14d5ca2e2e57643b6b4acfb980b18b7474c27e7b.tar.gz
ui: Initialize %FILE-PORT-NAME-CANONICALIZATION to #f.
This avoids loads of needless 'stat' calls due to the default 'relative
setting and the 'canonicalize-path' calls it leads to.  This was
especially visible when 'guix substitute' access files in
/var/guix/substitute/cache.

* guix/ui.scm (run-guix-command): Set %FILE-PORT-NAME-CANONICALIZATION
to #f.
-rw-r--r--guix/ui.scm4
1 files changed, 3 insertions, 1 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 906b349845..452d16308e 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1187,7 +1187,9 @@ found."
   (let ((command-main (module-ref module
                                   (symbol-append 'guix- command))))
     (parameterize ((program-name command))
-      (apply command-main args))))
+      ;; Disable canonicalization so we don't don't stat unreasonably.
+      (with-fluids ((%file-port-name-canonicalization #f))
+        (apply command-main args)))))
 
 (define (run-guix . args)
   "Run the 'guix' command defined by command line ARGS.