~ruther/guix-local

e68466de122d94ac3fa75aae234cd5fd89482a5a — Ludovic Courtès 4 years ago 4dca1ba
substitutes: Build correct narinfo URLs for cache URLs without trailing slash.

Fixes <https://issues.guix.gnu.org/51441>.
Reported by Z572 <873216071@qq.com> and Peng Mei Yu <pengmeiyu@riseup.net>.

Previously, passing '--substitute-urls=https://mirror.sjtu.edu.cn/guix',
without a trailing slash, would fail due to incorrectly constructed
narinfo URLs.  Users would have to explicitly add a trailing slash.

* guix/substitutes.scm (narinfo-request): Ensure BASE has a trailing
slash.
1 files changed, 5 insertions(+), 1 deletions(-)

M guix/substitutes.scm
M guix/substitutes.scm => guix/substitutes.scm +5 -1
@@ 156,7 156,11 @@ indicates that PATH is unavailable at CACHE-URL."

(define (narinfo-request cache-url path)
  "Return an HTTP request for the narinfo of PATH at CACHE-URL."
  (let* ((base (string->uri cache-url))
  ;; Ensure BASE has a trailing slash so that REF is correct regardless of
  ;; whether the user-provided CACHE-URL has a trailing slash.
  (let* ((base (string->uri (if (string-suffix? "/" cache-url)
                                cache-url
                                (string-append cache-url "/"))))
         (ref (build-relative-ref
               #:path (string-append (store-path-hash-part path) ".narinfo")))
         (url (resolve-uri-reference ref base))