[PATCH] swh: Specify 'extid_version' when looking up by external ID.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal

Debbugs page

Simon Tournier wrote 9 months ago
(address . guix-patches@gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
84f97438f7a1e7d88af4ffb01140b09dc7675312.1718718438.git.zimon.toutoune@gmail.com

* guix/swh.scm (swh-url): Don't redirect when URL contains 'extid_version'.
(lookup-external-id): Specify 'extid_version' avoiding SWH's bug from past
version.

Change-Id: Iea2a5256e0612dae95567907bb11edb92a50df73
---
guix/swh.scm | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)

Hi,

Without the patch:

$ guix repl
scheme@(guix-user)> (use-modules (guix swh) (gnu packages guile-xyz))
scheme@(guix-user)> (lookup-directory-by-nar-hash
(content-hash-value (origin-hash (package-source guile-wisp))) 'sha256)
$1 = "swh:1:dir:218d95849f10fc0691d7dfa80999ce5061e654ef"

This is incorrect. As explained in:


The mismatch comes from something unexpected on SWH side. That had been
corrected and the way to access to the fix is to update the version; hence the
patch.

$ ./pre-inst-env guix repl
scheme@(guix-user)> (use-modules (guix swh) (gnu packages guile-xyz))
scheme@(guix-user)> (lookup-directory-by-nar-hash
(content-hash-value (origin-hash (package-source guile-wisp))) 'sha256)
$1 = "swh:1:dir:1f35a460673e2c8ccf948b8c18cb8c18d2ec24fe"

WDYT?

Cheers,
simon


Toggle diff (38 lines)
diff --git a/guix/swh.scm b/guix/swh.scm
index f602cd89d1..e5824976d4 100644
--- a/guix/swh.scm
+++ b/guix/swh.scm
@@ -166,9 +166,15 @@ (define (swh-url path . rest)
(string-append root (string-join rest "/" 'prefix)))
;; Ensure there's a trailing slash or we get a redirect.
- (if (string-suffix? "/" url)
- url
- (string-append url "/")))
+ (cond
+ ((string-suffix? "/" url)
+ url)
+ ;; Special case; don't redirect
+ ;; <https://gitlab.softwareheritage.org/swh/meta/-/issues/5093>
+ ((string-contains url "extid_version")
+ url)
+ (else
+ (string-append url "/"))))
;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would
;; be ignored (<https://bugs.gnu.org/40486>).
@@ -461,7 +467,9 @@ (define (lookup-external-id type id)
(currently one of: \"bzr-nodeid\", \"hg-nodeid\", \"nar-sha256\",
\"checksum-sha512\")."
(call (swh-url "/api/1/extid" type
- (string-append "hex:" (bytevector->base16-string id)))
+ (string-append "hex:" (bytevector->base16-string id)
+ "/?extid_version=1"
+ ))
json->external-id))
(define* (lookup-directory-by-nar-hash hash #:optional (algorithm 'sha256))

base-commit: bc8a41f4a8d9f1f0525d7bc97c67ed3c8aea3111
--
2.41.0
Simon Tournier wrote 9 months ago
(address . 71631@debbugs.gnu.org)
87r0cuqog9.fsf@gmail.com
Re,

Toggle quote (13 lines)
> - (if (string-suffix? "/" url)
> - url
> - (string-append url "/")))
> + (cond
> + ((string-suffix? "/" url)
> + url)
> + ;; Special case; don't redirect
> + ;; <https://gitlab.softwareheritage.org/swh/meta/-/issues/5093>
> + ((string-contains url "extid_version")
> + url)
> + (else
> + (string-append url "/"))))

For the interested reader, here the message from SWH:


In short, the redirection is not possible here.


Cheers,
simon
Ludovic Courtès wrote 9 months ago
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87o77n9xbl.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (35 lines)
>
> * guix/swh.scm (swh-url): Don't redirect when URL contains 'extid_version'.
> (lookup-external-id): Specify 'extid_version' avoiding SWH's bug from past
> version.
>
> Change-Id: Iea2a5256e0612dae95567907bb11edb92a50df73
> ---
> guix/swh.scm | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> Hi,
>
> Without the patch:
>
> $ guix repl
> scheme@(guix-user)> (use-modules (guix swh) (gnu packages guile-xyz))
> scheme@(guix-user)> (lookup-directory-by-nar-hash
> (content-hash-value (origin-hash (package-source guile-wisp))) 'sha256)
> $1 = "swh:1:dir:218d95849f10fc0691d7dfa80999ce5061e654ef"
>
> This is incorrect. As explained in:
>
> https://gitlab.softwareheritage.org/swh/meta/-/issues/5093
>
> The mismatch comes from something unexpected on SWH side. That had been
> corrected and the way to access to the fix is to update the version; hence the
> patch.
>
> $ ./pre-inst-env guix repl
> scheme@(guix-user)> (use-modules (guix swh) (gnu packages guile-xyz))
> scheme@(guix-user)> (lookup-directory-by-nar-hash
> (content-hash-value (origin-hash (package-source guile-wisp))) 'sha256)
> $1 = "swh:1:dir:1f35a460673e2c8ccf948b8c18cb8c18d2ec24fe"

Woow.

I pushed it as bd908af0c619cb1b74afeeb07839d7af08de9d91 with a small
modification: ‘swh-url’ checks for parameters (the “?param=value” bit)
rather than “extid_version” specifically. I also moved the link to the
issue to ‘lookup-external-id’.

Thank you!

Ludo’.
Closed
Simon Tournier wrote 8 months ago
Re: bug#71631: [PATCH] swh: Specify 'extid_version' when looking up by external ID.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87ttgxf58u.fsf@gmail.com
Hi Ludo,

On Thu, 27 Jun 2024 at 00:02, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (5 lines)
> I pushed it as bd908af0c619cb1b74afeeb07839d7af08de9d91 with a small
> modification: ‘swh-url’ checks for parameters (the “?param=value” bit)
> rather than “extid_version” specifically. I also moved the link to the
> issue to ‘lookup-external-id’.

Thanks. Indeed your patch is better. :-)

Cheers,
simon
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 71631@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 71631
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help