Subject: Re: bug#34778: Guix refresh -u fails
From: Ludovic Courtès <[email-masked]>
To: Gábor Boskovits <[email-masked]>
Cc: [email-masked]
Date: Fri, 08 Mar 2019 23:30:09 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Gábor,

Gábor Boskovits <[email-masked]> skribis:

> guix refresh -u unibilium
> fails with the following backtrace:
> gabriel@guixsd ~/guix$ ./pre-inst-env guix refresh -u unibilium
> Backtrace:
>           14 (apply-smob/1 #<catch-closure 728c20>)
> In ice-9/boot-9.scm:
>     705:2 13 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
> In ice-9/eval.scm:
>     619:8 12 (_ #(#(#<directory (guile-user) 7ae140>)))
> In guix/ui.scm:
>   1654:12 11 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>     829:9 10 (catch _ _ #<procedure 7f7f2456b9b8 at guix/ui.scm:624…> …)
>     829:9  9 (catch _ _ #<procedure 7f7f2456b9d0 at guix/ui.scm:750…> …)
> In guix/scripts/refresh.scm:
>     513:8  8 (_)
> In guix/store.scm:
>   1737:24  7 (run-with-store _ _ #:guile-for-build _ #:system _ # _)
> In guix/scripts/refresh.scm:
>    531:16  6 (_ _)
> In srfi/srfi-1.scm:
>     640:9  5 (for-each #<procedure 289bd20 at guix/scripts/refresh.…> …)
> In guix/scripts/refresh.scm:
>    301:20  4 (update-package #<store-connection 256.99 93be10> #<pa…> …)
> In guix/upstream.scm:
>    374:22  3 (package-update #<store-connection 256.99 93be10> _ _ # _)
>    302:17  2 (download-tarball #<store-connection 256.99 93be10> #f # …)
> In guix/download.scm:
>    568:55  1 (download-to-store #<store-connection 256.99 93be10> #f …)
> In unknown file:
>            0 (basename #f #<undefined>)
>
> ERROR: In procedure basename:
> In procedure scm_to_utf8_stringn: Wrong type argument in position 1
> (expecting string): #f

This is because unibilium uses ‘git-fetch’, and currently ‘guix refresh
-u’ only knows how to download tarballs, it doesn’t know how to make Git
checkouts.

Commit 0bd1498fc40820be35125cc0a62482d015b58e9b fixes the issue by at
least reporting a proper error message.

We’ll have to adjust <upstream-source> to support not just tarball URLs,
as is currently the case, but also Git references.

Thanks,
Ludo’.