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.master
parent
bdbb6fbb19
commit
ae3b6bb0f4
|
@ -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
|
||||
|
|
Reference in New Issue