From 128663e4c8e8e3c2a56686c6018641ce7bcf92da Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 Mar 2013 22:58:19 +0100 Subject: store: Really disable file name canonicalization for derivation inputs. * guix/store.scm (write-contents)[call-with-binary-input-file]: Set %FILE-PORT-NAME-CANONICALIZATION to #f. * gnu/packages.scm (search-patch, search-bootstrap-binary): Leave %FILE-PORT-NAME-CANONICALIZATION unchanged. This reverts 9776ebb. --- guix/store.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'guix/store.scm') diff --git a/guix/store.scm b/guix/store.scm index 688ddbe714..4d078c5899 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -238,12 +238,14 @@ (define (write-contents file p size) "Write SIZE bytes from FILE to output port P." (define (call-with-binary-input-file file proc) ;; Open FILE as a binary file. This avoids scan-for-encoding, and thus - ;; avoids any initial buffering. - (let ((port (open-file file "rb"))) - (catch #t (cut proc port) - (lambda args - (close-port port) - (apply throw args))))) + ;; avoids any initial buffering. Disable file name canonicalization to + ;; avoid stat'ing like crazy. + (with-fluids ((%file-port-name-canonicalization #f)) + (let ((port (open-file file "rb"))) + (catch #t (cut proc port) + (lambda args + (close-port port) + (apply throw args)))))) (define (dump in size) (define buf-size 65536) -- cgit v1.2.3