diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-10-05 22:15:19 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-10-05 23:05:06 +0200 |
commit | e5788ebbe1f45a1088249b9138de17b330609712 (patch) | |
tree | 062b97f086d9fa9bddfaae2b445137862c3e9570 | |
parent | 7006370e5970198706b8110ef39a31860300c49d (diff) | |
download | gnu-guix-e5788ebbe1f45a1088249b9138de17b330609712.tar gnu-guix-e5788ebbe1f45a1088249b9138de17b330609712.tar.gz |
publish: Cache uncompressed nars as well.
Fixes <https://bugs.gnu.org/28664>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.
* guix/scripts/publish.scm (bake-narinfo+nar): When COMPRESSION is
'none, write NAR instead of doing nothing.
(make-request-handler): Use 'render-nar/cached' for /nar URLs with no
compression.
* tests/publish.scm ("with cache", "with cache, uncompressed"): Adjust
expected result accordingly.
-rw-r--r-- | guix/scripts/publish.scm | 15 | ||||
-rw-r--r-- | tests/publish.scm | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index ade3c49a54..dd54f03996 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -484,9 +484,11 @@ requested using POOL." #:buffer-size (* 128 1024)) (rename-file (string-append nar ".tmp") nar)) ('none - ;; When compression is disabled, we retrieve files directly from the - ;; store; no need to cache them. - #t)) + ;; Cache nars even when compression is disabled so that we can + ;; guarantee the TTL (see <https://bugs.gnu.org/28664>.) + (with-atomic-file-output nar + (lambda (port) + (write-file item port))))) (mkdir-p (dirname narinfo)) (with-atomic-file-output narinfo @@ -788,8 +790,11 @@ blocking." ;; /nar/<store-item> ((components ... store-item) (if (nar-path? components) - (render-nar store request store-item - #:compression %no-compression) + (if cache + (render-nar/cached store cache request store-item + #:compression %no-compression) + (render-nar store request store-item + #:compression %no-compression)) (not-found request))) (x (not-found request))) diff --git a/tests/publish.scm b/tests/publish.scm index 31043f71fa..f33898fd58 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -340,7 +340,7 @@ FileSize: ~a~%" 200 ;nar/gzip/… #t ;Content-Length #t ;FileSize - 200) ;nar/… + 404) ;nar/… (call-with-temporary-directory (lambda (cache) (let ((thread (with-separate-output-ports @@ -393,7 +393,7 @@ FileSize: ~a~%" (let ((item (add-text-to-store %store "fake-compressed-thing.tar.gz" (random-text)))) (test-equal "with cache, uncompressed" - (list #f + (list #t `(("StorePath" . ,item) ("URL" . ,(string-append "nar/" (basename item))) ("Compression" . "none")) |