Subject: bug#55367: guix refresh fails. struct-vtable: Wrong type argument in position 1 (expecting struct)

From: Ludovic Courtès <[email-masked]>
Date: Wed, 11 May 2022 15:49:27 +0200

Hi,

Rostislav Svoboda <[email-masked]> skribis:

> In guix/scripts/refresh.scm:
>    378:10  6 (check-for-package-update #<package gog-world-of-goo@1…> …)
> In srfi/srfi-1.scm:
>    858:15  5 (any1 #<procedure 7f314c55de60 at guix/upstream.scm:28…> …)
> In guix/upstream.scm:
>    284:15  4 (_ _)
> In guix/memoization.scm:
>     101:0  3 (_ #<hash-table 7f31422cfce0 55/113> #<package gog-wor…> …)
> In guix/gnu-maintenance.scm:
>    188:20  2 (_)
> In ice-9/boot-9.scm:
>   1685:16  1 (raise-exception _ #:continuable? _)
>   1685:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure struct-vtable: Wrong type argument in position 1
> (expecting struct): #f

This happens with a package that’s not in the ‘guix’ channel (see
above).  I can’t find the definition of that package though, so I can’t
really help.

If you can reproduce it with a package that’s in Guix, or if you can
point me to the source, we might be able to better understand.

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.

Ludo’.