[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55367: guix refresh fails. struct-vtable: Wrong type argument in pos
From: |
Ludovic Courtès |
Subject: |
bug#55367: guix refresh fails. struct-vtable: Wrong type argument in position 1 (expecting struct) |
Date: |
Thu, 12 May 2022 10:18:24 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hi,
Maxime Devos <maximedevos@telenet.be> skribis:
> Ludovic Courtès schreef op wo 11-05-2022 om 15:49 [+0200]:
>> The code at guix/gnu-maintenance.scm:188:20 checks a URI, so my guess is
>> that the source of that package is not a valid URI, and thus
>> ‘string->uri’ returns #false.
>
> It's "gogdownloader://world_of_goo/en3installer0".
>
> (string->uri "gogdownloader://world_of_goo/en3installer0")
> $1 = #f
> (string->uri "gogdownloader://worldofgoo/en3installer0")
> $2 = #f
The second one works for me:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (string->uri "gogdownloader://worldofgoo/en3installer0")
$7 = #<<uri> scheme: gogdownloader userinfo: #f host: "worldofgoo" port: #f
path: "/en3installer0" query: #f fragment: #f>
--8<---------------cut here---------------end--------------->8---
The first one has an invalid authority part, which doesn’t match
‘authority-regexp’ (underscores are not permitted; I believe (web uri)
is correct here.)
> Worse, looks like non-ASCII characters (that are valid DNS names, at
> least ignoring punycode encodings and such) aren't supported:
>
> (string->uri "https://www.étoile.fr")
> $3 = #f
Right; I think ‘string->uri’ expects a Punycode-encoded string, which is
probably correct per RFC 3986.
That said, it’s beyond this scope of this bug report.
To me, the conclusion is that the package has a invalid URI, so it’s not
a Guix bug strictly speaking. However, we could change
gnu-maintenance.scm so that it deals with invalid URIs gracefully.
Thoughts?
Ludo’.