Subject: guix lint --checkers=refresh fails

From: Jonathan Brielmaier <[email-masked]>
Date: Fri, 23 Aug 2019 16:45:49 +0200

During testing various guix commands on openSUSE Tumbleweed with the
openSUSE package, I found a strange error. This happens with guix 1.0.1
and d78bc23411 as openSUSE packages.

Steps to reproduce:
* Install Tumbleweed
$ sudo zypper install guix
$ sudo systemctl start guix-daemon
$ guix install nss-certs
$ export
SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
$ export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
$ guix lint --checkers=refresh hello
Backtrace:[email-masked] [refresh]...
           8 (apply-smob/1 #<catch-closure 7f611c41c7c0>)
In ice-9/boot-9.scm:
    705:2  7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  6 (_ #(#(#<directory (guile-user) 7f611c43b140>)))
In guix/ui.scm:
  1747:12  5 (run-guix-command _ . _)
In srfi/srfi-1.scm:
    640:9  4 (for-each #<procedure 7f611af598e0 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
   1152:4  3 (run-checkers #<package [email-masked] gnu/packages/base.s…> …)
In srfi/srfi-1.scm:
    640:9  2 (for-each #<procedure 7f6110857820 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
    954:2  1 (check-for-updates #<package [email-masked] gnu/packages/ba…>)
In ice-9/boot-9.scm:
    829:9  0 (catch srfi-34 #<procedure 7f611074a3c0 at guix/script…> …)

ice-9/boot-9.scm:829:9: In procedure catch:
Wrong type to apply: #f

Error does not occur when:
* guix is installed via the installer script 1.0.1
* guix is installed via the installer script and guix pulled to current
master
* package source doesn't gome from gnu mirror like 0xffff (github),
mate-system-monitor, dconf-editor...

The only difference I can see between guix binary and openSUSE's guix is
the first uses guile 2.2.4 and the second guile 2.2.6 (from Tumbleweed).

Some backtrace from guix repl:

scheme@(guix-user)> (use-modules (guix scripts lint))
scheme@(guix-user)> (guix-lint "--checkers=refresh" "hello")
ice-9/boot-9.scm:829:9: In procedure catch:
Wrong type to apply: #f

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guix-user) [1]> ,bt
In srfi/srfi-1.scm:
    640:9  4 (for-each #<procedure 7fb9c718a560 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
   1152:4  3 (run-checkers #<package [email-masked] gnu/packages/base.s…> …)
In srfi/srfi-1.scm:
    640:9  2 (for-each #<procedure 7fb9ba623b00 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
    954:2  1 (check-for-updates #<package [email-masked] gnu/packages/ba…>)
In ice-9/boot-9.scm:
    829:9  0 (catch srfi-34 #<procedure 7fb9bd5321e0 at guix/script…> …)
scheme@(guix-user) [1]> ,locals
  Local variables:
  $1 = k = srfi-34
  $2 = thunk = #<procedure 7fb9bd5321e0 at guix/scripts/lint.scm:880:2…>
  $3 = handler = #<procedure 7fb9ba623740 at guix/scripts/lint.scm:880…>
  $4 = #f = #<thread-local-fluid 7fb9cb21d750>
scheme@(guix-user) [1]> ,up
In guix/scripts/lint.scm:
    954:2  1 (check-for-updates #<package [email-masked] gnu/packages/ba…>)
scheme@(guix-user) [1]> ,locals
  Local variables:
  $5 = package = #<package [email-masked] gnu/packages/base.scm:72 7fb9bce…>
  $6 = arg = #<procedure call-with-networking-fail-safe (message error…>
  $7 = box = #<variable 7fb9caecbd60 value: #<procedure 7fb9caec8ac0 a…>
  $8 = arg = #<procedure 7fb9caec8ac0 at ice-9/format.scm:1609:9 (dest…>
  $9 = arg = #f
  $10 = box = #<variable 7fb9cae898c0 value: #<procedure G_ (t-13c8acc…>
  $11 = tmp = "while retrieving upstream info for '~a'"
  $12 = arg = #<record-type <package>>
  $13 = box = #<variable 7fb9c9de61d0 value: #<record-type <package>>>
scheme@(guix-user) [1]> ,up
In srfi/srfi-1.scm:
    640:9  2 (for-each #<procedure 7fb9ba623b00 at guix/scripts/lin…> …)
scheme@(guix-user) [1]> ,locals
  Local variables:
  $19 = f = #<procedure 7fb9ba623b00 at guix/scripts/lint.scm:1152:14 …>
  $20 = l = (#<<lint-checker> name: refresh description: "Check the p…>)

To be honest I'm a bit lost here. If you have any ideas how to debug
this, please let my know.

Kind Regards
Jonathan