~ruther/guix-local

e5788ebbe1f45a1088249b9138de17b330609712 — Ludovic Courtès 8 years ago 7006370
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.
2 files changed, 12 insertions(+), 7 deletions(-)

M guix/scripts/publish.scm
M tests/publish.scm
M guix/scripts/publish.scm => guix/scripts/publish.scm +10 -5
@@ 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)))

M tests/publish.scm => tests/publish.scm +2 -2
@@ 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"))