Subject: Re: bug#37071: guix import pypi httpie fails

From: Ludovic Courtès <[email-masked]>
Date: Wed, 28 Aug 2019 22:48:48 +0200

Hi,

Robert Vollmert <[email-masked]> skribis:

> $ guix import pypi httpie
>  …0.2.tar.gz  83KiB                   291KiB/s 00:00 [##################] 100.0%
>  ….py3-none-any.whl  58KiB            201KiB/s 00:00 [##################] 100.0%
> guix import: warning: Failed to extract file: httpie-1.0.2.dist-info/METADATA from wheel.
> Backtrace:
>           15 (primitive-load "/home/rob/.config/guix/current/bin/guix")
> In guix/ui.scm:
>   1692:12 14 (run-guix-command _ . _)
> In guix/scripts/import.scm:
>    115:11 13 (guix-import . _)
> In guix/scripts/import/pypi.scm:
>    102:23 12 (guix-import-pypi . _)
> In guix/memoization.scm:
>      98:0 11 (_ #<hash-table 11e5b20 0/31> ("httpie") _)
> In unknown file:
>           10 (_ #<procedure 11f9580 at guix/memoization.scm:179:32 …> …)
> In ice-9/boot-9.scm:
>     829:9  9 (catch _ _ #<procedure 7f2711b7fd48 at guix/import/pyp…> …)
> In guix/utils.scm:
>     635:8  8 (call-with-temporary-output-file _)
> In guix/import/pypi.scm:
>    384:25  7 (_ "/tmp/guix-file.A9OwRK" _)
> In guix/utils.scm:
>     635:8  6 (call-with-temporary-output-file #<procedure 1091c20 at…>)
> In guix/import/utils.scm:
>    133:10  5 (_ "/tmp/guix-file.jFzPxe" _)
>     123:4  4 (url-fetch _ _)
> In guix/build/download.scm:
>     763:4  3 (url-fetch "/tmp/guix-file.A9OwRK" "/tmp/guix-file.jFz…" …)
> In srfi/srfi-1.scm:
>    679:15  2 (append-map _ _ . _)
>    592:17  1 (map1 (#f))
> In guix/build/download.scm:
>     728:8  0 (maybe-expand-mirrors _ _)
>
> guix/build/download.scm:728:8: In procedure maybe-expand-mirrors:
> In procedure struct_vtable: Wrong type argument in position 1 (expecting struct): #f

The key here is the message “Failed to extract […] METADATA from wheel”.

When that happens, I think we miss too much information to do anything
sensible.  Maxim, do you confirm?

If you add ‘unzip’ to $PATH, the problem should vanish.

We should probably process wheels & co. in derivations to avoid relying
on tools that may or may not be in $PATH.

Thoughts?

Ludo’.