Subject: Re: [bug#51441] [PATCH] substitutes: keep base's uri-path for Properly construct URL.

From: Peng Mei Yu <[email-masked]>
Date: Fri, 29 Oct 2021 12:18:52 +0800

Hi,

Z572 via Guix-patches via writes:

> @@ -158,7 +159,8 @@ (define (narinfo-request cache-url path)
>    "Return an HTTP request for the narinfo of PATH at CACHE-URL."
>    (let* ((base (string->uri cache-url))
>           (ref (build-relative-ref
> -               #:path (string-append (store-path-hash-part path) ".narinfo")))
> +               #:path (string-append (uri-path base) "/"
> +                                     (store-path-hash-part path) ".narinfo")))
>           (url (resolve-uri-reference ref base))
>           (headers '((User-Agent . "GNU Guile"))))
>      (build-request url #:method 'GET #:headers headers)))
> --

It seems that the root cause for the problem is that cache-url lacks a
trailing slash.  Therefore the last path component is stripped from
`base` when we compute (resolve-uri-reference ref base).  So I think
ensuring cache-url ends with a slash ("/") is a better approach.

--
Peng Mei Yu