Subject: bug#42504: guix refresh --update fails for Rust packages

From: Alexandru-Sergiu Marton <[email-masked]>
Date: Fri, 24 Jul 2020 10:16:17 +0300

Hi,

I tried to use the automatic updater for a Rust package but it had an
ugly fail. Here's the backtrace:

--8<---------------cut here---------------start------------->8---
[brown@121408 guix][env]$ ./pre-inst-env guix refresh --update rust-instant
Backtrace:
In ice-9/boot-9.scm:
  1736:10 16 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
          15 (apply-smob/0 #<thunk 7f462a316580>)
In ice-9/boot-9.scm:
    718:2 14 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
    619:8 13 (_ #(#(#<directory (guile-user) 7f4629f52f00>)))
In guix/ui.scm:
  1974:12 12 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10 11 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
  1731:15 10 (with-exception-handler #<procedure 7f461e6afbd0 at ice-9/boot-9.scm:1815:7 (exn)> _ #:unwind? _ #:unwind-for-type _)
  1736:10  9 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In guix/store.scm:
   631:22  8 (thunk)
  2025:24  7 (run-with-store #<store-connection 256.99 7f461e6b7eb0> #<procedure 7f461c337f00 at guix/scripts/refresh.scm:535:10 (state)> #:guile-for-build _ #:system _ #:target _)
In guix/scripts/refresh.scm:
   552:16  6 (_ _)
In srfi/srfi-1.scm:
    634:9  5 (for-each #<procedure 7f462019e0f0 at guix/scripts/refresh.scm:553:17 (t-916fdc98f4be2f1-1c8c)> (#<package [email-masked] /home/brown/src/guix/gnu/packages/crates-io.scm:11321 7f4620de5d20>))
In guix/scripts/refresh.scm:
   318:20  4 (update-package #<store-connection 256.99 7f461e6b7eb0> #<package [email-masked] /home/brown/src/guix/gnu/packages/crates-io.scm:11321 7f4620de5d20> _ #:key-download _ #:warn? _)
In guix/upstream.scm:
   376:34  3 (package-update/url-fetch #<store-connection 256.99 7f461e6b7eb0> _ #<<upstream-source> package: "rust-instant" version: "0.1.6" urls: ("https://crates.io/api/v1/crates/instant/0.1.6/download…> …)
In unknown file:
           2 (string-contains #f "z" #<undefined> #<undefined> #<undefined> #<undefined>)
In ice-9/boot-9.scm:
  1669:16  1 (raise-exception _ #:continuable? _)
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure string-contains: Wrong type argument in position 1 (expecting string): #f
--8<---------------cut here---------------end--------------->8---

It's not only this package. Trying to update rust-serde gives a very
similar backtrace:

--8<---------------cut here---------------start------------->8---
Backtrace:
In ice-9/boot-9.scm:
  1736:10 16 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
          15 (apply-smob/0 #<thunk 7f4a4a9a6580>)
In ice-9/boot-9.scm:
    718:2 14 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
    619:8 13 (_ #(#(#<directory (guile-user) 7f4a4a5e2f00>)))
In guix/ui.scm:
  1974:12 12 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10 11 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
  1731:15 10 (with-exception-handler #<procedure 7f4a3efbd390 at ice-9/boot-9.scm:1815:7 (exn)> _ #:unwind? _ #:unwind-for-type _)
  1736:10  9 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In guix/store.scm:
   631:22  8 (thunk)
  2025:24  7 (run-with-store #<store-connection 256.99 7f4a40a59000> #<procedure 7f4a3c9d6d20 at guix/scripts/refresh.scm:535:10 (state)> #:guile-for-build _ #:system _ #:target _)
In guix/scripts/refresh.scm:
   552:16  6 (_ _)
In srfi/srfi-1.scm:
    634:9  5 (for-each #<procedure 7f4a40aa13c0 at guix/scripts/refresh.scm:553:17 (t-916fdc98f4be2f1-1c8c)> (#<package [email-masked] /home/brown/src/guix/gnu/packages/crates-io.scm:22635 7f4a414d06e0>))
In guix/scripts/refresh.scm:
   318:20  4 (update-package #<store-connection 256.99 7f4a40a59000> #<package [email-masked] /home/brown/src/guix/gnu/packages/crates-io.scm:22635 7f4a414d06e0> _ #:key-download _ #:warn? _)
In guix/upstream.scm:
   376:34  3 (package-update/url-fetch #<store-connection 256.99 7f4a40a59000> _ #<<upstream-source> package: "rust-serde" version: "1.0.114" urls: ("https://crates.io/api/v1/crates/serde/1.0.114/download…> …)
In unknown file:
           2 (string-contains #f "z" #<undefined> #<undefined> #<undefined> #<undefined>)
In ice-9/boot-9.scm:
  1669:16  1 (raise-exception _ #:continuable? _)
  1669:16  0 (raise-exception _ #:continuable? _)
--8<---------------cut here---------------end--------------->8---

It seems that I can update non-rust stuff though. `guix refresh --update
i3-gaps` works fine.

Cheers,
Sergiu