From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxim Cournoyer Subject: bug#37071: guix import pypi httpie fails Date: Sat, 31 Aug 2019 23:54:36 +0900 Message-ID: <87pnkl5qs3.fsf@gmail.com> References: <47016DD3-0499-428A-9DE0-DACF8AE4D78B@vllmrt.net> <871rx5f233.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:40962) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i3wMl-0005AN-W3 for bug-guix@gnu.org; Sat, 31 Aug 2019 01:56:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i3wMk-0005dY-Mi for bug-guix@gnu.org; Sat, 31 Aug 2019 01:56:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:46127) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i3wMk-0005dR-J4 for bug-guix@gnu.org; Sat, 31 Aug 2019 01:56:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i3wMk-0001tU-Fz for bug-guix@gnu.org; Sat, 31 Aug 2019 01:56:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <871rx5f233.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 28 Aug 2019 22:48:48 +0200") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 37071@debbugs.gnu.org, Robert Vollmert Hello, Ludovic Court=C3=A8s writes: > Hi, > > Robert Vollmert skribis: > >> $ guix import pypi httpie >> =E2=80=A60.2.tar.gz 83KiB 291KiB/s 00:00 [##########= ########] 100.0% >> =E2=80=A6.py3-none-any.whl 58KiB 201KiB/s 00:00 [##########= ########] 100.0% >> guix import: warning: Failed to extract file: httpie-1.0.2.dist-info/MET= ADATA 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 (_ # ("httpie") _) >> In unknown file: >> 10 (_ # =E2=80=A6) >> In ice-9/boot-9.scm: >> 829:9 9 (catch _ _ # =E2=80=A6) >> 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 #) >> 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=E2= =80=A6" =E2=80=A6) >> 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 =E2=80=9CFailed to extract [=E2=80=A6] METADA= TA from wheel=E2=80=9D. > > When that happens, I think we miss too much information to do anything > sensible. Maxim, do you confirm? > > If you add =E2=80=98unzip=E2=80=99 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=E2=80=99. I can't seem to reproduce, even with 'unzip' removed from my profile: --8<---------------cut here---------------start------------->8--- Starting download of /tmp/guix-file.Bdb5Iq >From https://files.pythonhosted.org/packages/d5/a4/ab61c1dbfdef33c7b7f5f7df= 0d79eb5cd55a106601a4acc17f983f320b4a/httpie-1.0.3.tar.gz... =E2=80=A60.3.tar.gz 85KiB 1.4MiB/s 00:00 [#############= #####] 100.0% Starting download of /tmp/guix-file.F4KKQY >From https://files.pythonhosted.org/packages/da/08/22487f04aa2cb831c5e02c92= 86f1d145f81b06bf9bbf1e73b70d2dc15d7f/httpie-1.0.3-py2.py3-none-any.whl... =E2=80=A6.py3-none-any.whl 58KiB 1.1MiB/s 00:00 [#############= #####] 100.0% guix import: warning: Failed to extract file: httpie-1.0.3.dist-info/METADA= TA from wheel. (package (name "python-httpie") (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "httpie" version)) (sha256 (base32 "103fcigpxf4nqmrdqjnyz7d9n4n16906slwmmqqc0gkxv8hnw6vd")))) (build-system python-build-system) (propagated-inputs `(("python-pygments" ,python-pygments) ("python-requests" ,python-requests))) (home-page "http://httpie.org/") (synopsis "HTTPie - a CLI, cURL-like tool for humans.") (description "HTTPie - a CLI, cURL-like tool for humans.") (license license:bsd-3)) --8<---------------cut here---------------end--------------->8--- It's hard to investigate the problem without being able to reproduce, but, what the code is supposed to do is a. Parse the METADATA file of the wheel archive. b. If that fails, parse the first requires.txt file found in a source archive of the package. When both fail, empty lists are returned for the required dependencies and optional test dependencies (and this should just give you a package without inputs rather than a backtrace). The later case is covered by the functional test named "pypi->guix-package, no usable requirement file." in guix/tests/pypi.scm. HTH! Maxim