~ruther/guix-local

ae3b6bb0f4dc1f69ecb629c9b7ad34588d646039 — Ludovic Courtès 13 years ago bdbb6fb
substitute-binary: Don't cache .narinfo lookups when lacking networking.

* guix/scripts/substitute-binary.scm (lookup-narinfo): Don't cache
  NARINFO when CACHE is #f.
1 files changed, 16 insertions(+), 7 deletions(-)

M guix/scripts/substitute-binary.scm
M guix/scripts/substitute-binary.scm => guix/scripts/substitute-binary.scm +16 -7
@@ 236,8 236,8 @@ reading PORT."
(define (fetch-narinfo cache path)
  "Return the <narinfo> record for PATH, or #f if CACHE does not hold PATH."
  (define (download url)
    ;; Download the `nix-cache-info' from URL, and return its contents as an
    ;; list of key/value pairs.
    ;; Download the .narinfo from URL, and return its contents as a list of
    ;; key/value pairs.
    (false-if-exception (fetch (string->uri url))))

  (and (string=? (cache-store-directory cache) (%store-prefix))


@@ 288,11 288,15 @@ check what it has."
                     (values #f #f)))))
    (if valid?
        cached                                    ; including negative caches
        (let ((narinfo (and=> (force cache)
                              (cut fetch-narinfo <> path))))
          (with-atomic-file-output cache-file
            (lambda (out)
              (write (cache-entry narinfo) out)))
        (let* ((cache   (force cache))
               (narinfo (and cache (fetch-narinfo cache path))))
          ;; Cache NARINFO only when CACHE was actually accessible.  This
          ;; avoids caching negative hits when in fact we just lacked network
          ;; access.
          (when cache
            (with-atomic-file-output cache-file
              (lambda (out)
                (write (cache-entry narinfo) out))))
          narinfo))))

(define (remove-expired-cached-narinfos)


@@ 457,4 461,9 @@ indefinitely."
     (("--version")
      (show-version-and-exit "guix substitute-binary")))))


;;; Local Variable:
;;; eval: (put 'with-atomic-file-output 'scheme-indent-function 1)
;;; End:

;;; substitute-binary.scm ends here