download: Keep only one slash when concatenating URIs.
* guix/build/download.scm (url-fetch)[uri-vicinity]: New procedure. [maybe-expand-mirrors]: Use it.
This commit is contained in:
parent
5321f74f23
commit
480943dd46
|
@ -135,6 +135,12 @@ which is not available during bootstrap."
|
||||||
"Fetch FILE from URL; URL may be either a single string, or a list of
|
"Fetch FILE from URL; URL may be either a single string, or a list of
|
||||||
string denoting alternate URLs for FILE. Return #f on failure, and FILE
|
string denoting alternate URLs for FILE. Return #f on failure, and FILE
|
||||||
on success."
|
on success."
|
||||||
|
(define (uri-vicinity dir file)
|
||||||
|
;; Concatenate DIR, slash, and FILE, keeping only one slash in between.
|
||||||
|
;; This is required by some HTTP servers.
|
||||||
|
(string-append (string-trim-right dir #\/) "/"
|
||||||
|
(string-trim file #\/)))
|
||||||
|
|
||||||
(define (maybe-expand-mirrors uri)
|
(define (maybe-expand-mirrors uri)
|
||||||
(case (uri-scheme uri)
|
(case (uri-scheme uri)
|
||||||
((mirror)
|
((mirror)
|
||||||
|
@ -142,7 +148,7 @@ on success."
|
||||||
(path (uri-path uri)))
|
(path (uri-path uri)))
|
||||||
(match (assoc-ref mirrors kind)
|
(match (assoc-ref mirrors kind)
|
||||||
((mirrors ..1)
|
((mirrors ..1)
|
||||||
(map (compose string->uri (cut string-append <> path))
|
(map (compose string->uri (cut uri-vicinity <> path))
|
||||||
mirrors))
|
mirrors))
|
||||||
(_
|
(_
|
||||||
(error "unsupported URL mirror kind" kind uri)))))
|
(error "unsupported URL mirror kind" kind uri)))))
|
||||||
|
|
Loading…
Reference in New Issue