diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-08-22 17:14:20 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-08-22 17:14:20 +0200 |
commit | b6952cad8dadd40f0fa44d4997583991acf8cb3f (patch) | |
tree | baa3d405256b2fb8503643afa3c5503c33733489 | |
parent | 3f69e393d33434a052fefcfa1875d841eb09797d (diff) | |
download | guix-b6952cad8dadd40f0fa44d4997583991acf8cb3f.tar.gz guix-b6952cad8dadd40f0fa44d4997583991acf8cb3f.zip |
substitute-binary: Try hard to avoid port buffering.
* guix/scripts/substitute-binary.scm (fetch): In the `file' case, open
with the `b' flag, so that the coding cookie reading thing doesn't
lead to buffering some of the data (on 2.0.5).
* tests/utils.scm ("filtered-port, file"): Open with `r0b'. Fixes a
test failure with Guile 2.0.5 whereby the first byte of FILE would be
missing from DECOMPRESSED.
-rwxr-xr-x | guix/scripts/substitute-binary.scm | 5 | ||||
-rw-r--r-- | tests/utils.scm | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index 0fdec456f6..4a013fe277 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -143,9 +143,8 @@ again." provide." (case (uri-scheme uri) ((file) - (let ((port (open-input-file (uri-path uri)))) - (unless buffered? - (setvbuf port _IONBF)) + (let ((port (open-file (uri-path uri) + (if buffered? "rb" "r0b")))) (values port (stat:size (stat port))))) ((http) ;; On Guile 2.0.5, `http-fetch' fetches the whole thing at once. So diff --git a/tests/utils.scm b/tests/utils.scm index e8549204d0..3be60e443d 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -103,7 +103,7 @@ (test-assert "filtered-port, file" (let* ((file (search-path %load-path "guix.scm")) - (input (open-file file "r0"))) + (input (open-file file "r0b"))) (let*-values (((compressed pids1) (filtered-port `(,%gzip "-c" "--fast") input)) ((decompressed pids2) |