substitute: Inline fetch in to process-substitutes.
As it's only called in one place, and this should make the code easier to read. * guix/scripts/substitute.scm (fetch): Move procedure inside… (process-substitution): …here.
This commit is contained in:
parent
b9d058e3f7
commit
8116cc6673
1 changed files with 29 additions and 31 deletions
|
|
@ -169,37 +169,6 @@ again."
|
||||||
(sigaction SIGALRM SIG_DFL)
|
(sigaction SIGALRM SIG_DFL)
|
||||||
(apply values result)))))
|
(apply values result)))))
|
||||||
|
|
||||||
(define (fetch uri)
|
|
||||||
"Return a binary input port to URI and the number of bytes it's expected to
|
|
||||||
provide."
|
|
||||||
(case (uri-scheme uri)
|
|
||||||
((file)
|
|
||||||
(let ((port (open-file (uri-path uri) "r0b")))
|
|
||||||
(values port (stat:size (stat port)))))
|
|
||||||
((http https)
|
|
||||||
(guard (c ((http-get-error? c)
|
|
||||||
(leave (G_ "download from '~a' failed: ~a, ~s~%")
|
|
||||||
(uri->string (http-get-error-uri c))
|
|
||||||
(http-get-error-code c)
|
|
||||||
(http-get-error-reason c))))
|
|
||||||
;; Test this with:
|
|
||||||
;; sudo tc qdisc add dev eth0 root netem delay 1500ms
|
|
||||||
;; and then cancel with:
|
|
||||||
;; sudo tc qdisc del dev eth0 root
|
|
||||||
(with-timeout %fetch-timeout
|
|
||||||
(begin
|
|
||||||
(warning (G_ "while fetching ~a: server is somewhat slow~%")
|
|
||||||
(uri->string uri))
|
|
||||||
(warning (G_ "try `--no-substitutes' if the problem persists~%")))
|
|
||||||
(http-fetch uri #:text? #f
|
|
||||||
#:open-connection open-connection-for-uri/maybe
|
|
||||||
#:keep-alive? #t
|
|
||||||
#:buffered? #f
|
|
||||||
#:verify-certificate? #f))))
|
|
||||||
(else
|
|
||||||
(leave (G_ "unsupported substitute URI scheme: ~a~%")
|
|
||||||
(uri->string uri)))))
|
|
||||||
|
|
||||||
(define (narinfo-cache-file cache-url path)
|
(define (narinfo-cache-file cache-url path)
|
||||||
"Return the name of the local file that contains an entry for PATH. The
|
"Return the name of the local file that contains an entry for PATH. The
|
||||||
entry is stored in a sub-directory specific to CACHE-URL."
|
entry is stored in a sub-directory specific to CACHE-URL."
|
||||||
|
|
@ -706,6 +675,35 @@ the current output port."
|
||||||
(apply dump-file/deduplicate
|
(apply dump-file/deduplicate
|
||||||
(append args (list #:store (%store-prefix)))))
|
(append args (list #:store (%store-prefix)))))
|
||||||
|
|
||||||
|
(define (fetch uri)
|
||||||
|
(case (uri-scheme uri)
|
||||||
|
((file)
|
||||||
|
(let ((port (open-file (uri-path uri) "r0b")))
|
||||||
|
(values port (stat:size (stat port)))))
|
||||||
|
((http https)
|
||||||
|
(guard (c ((http-get-error? c)
|
||||||
|
(leave (G_ "download from '~a' failed: ~a, ~s~%")
|
||||||
|
(uri->string (http-get-error-uri c))
|
||||||
|
(http-get-error-code c)
|
||||||
|
(http-get-error-reason c))))
|
||||||
|
;; Test this with:
|
||||||
|
;; sudo tc qdisc add dev eth0 root netem delay 1500ms
|
||||||
|
;; and then cancel with:
|
||||||
|
;; sudo tc qdisc del dev eth0 root
|
||||||
|
(with-timeout %fetch-timeout
|
||||||
|
(begin
|
||||||
|
(warning (G_ "while fetching ~a: server is somewhat slow~%")
|
||||||
|
(uri->string uri))
|
||||||
|
(warning (G_ "try `--no-substitutes' if the problem persists~%")))
|
||||||
|
(http-fetch uri #:text? #f
|
||||||
|
#:open-connection open-connection-for-uri/maybe
|
||||||
|
#:keep-alive? #t
|
||||||
|
#:buffered? #f
|
||||||
|
#:verify-certificate? #f))))
|
||||||
|
(else
|
||||||
|
(leave (G_ "unsupported substitute URI scheme: ~a~%")
|
||||||
|
(uri->string uri)))))
|
||||||
|
|
||||||
(unless narinfo
|
(unless narinfo
|
||||||
(leave (G_ "no valid substitute for '~a'~%")
|
(leave (G_ "no valid substitute for '~a'~%")
|
||||||
store-item))
|
store-item))
|
||||||
|
|
|
||||||
Reference in a new issue