guix import pypi jedi: weird backtrace, no proper error message

  • Done
  • quality assurance status badge
Details
4 participants
  • Ben Woodcroft
  • Danny Milosavljevic
  • Ludovic Courtès
  • Cyril Roelandt
Owner
unassigned
Submitted by
Danny Milosavljevic
Severity
normal

Debbugs page

Danny Milosavljevic wrote 9 years ago
(address . bug-guix@gnu.org)
20160617061639.666c57c6@scratchpost.org
$ guix import pypi jedi

Starting download of /tmp/guix-file.n01KoB
….0.tar.gz 326KiB 402KiB/s 00:01 [####################] 100.0%

Starting download of /tmp/guix-file.CbhRLk
…py3-none-any.whl 154KiB 291KiB/s 00:01 [####################] 100.0%
Backtrace:
In ice-9/boot-9.scm:
157: 19 [catch srfi-34 #<procedure 57736c0 at ice-9/eval.scm:416:20 ()> ...]
In ice-9/r4rs.scm:
90: 18 [dynamic-wind #<procedure 5773570 at ice-9/eval.scm:416:20 ()> ...]
In ice-9/eval.scm:
387: 17 [eval # #]
387: 16 [eval # #]
387: 15 [eval # #]
387: 14 [eval # #]
387: 13 [eval # #]
387: 12 [eval # #]
387: 11 [eval # #]
387: 10 [eval # #]
387: 9 [eval # #]
387: 8 [eval # #]
387: 7 [eval # #]
411: 6 [eval # #]
In ice-9/r4rs.scm:
90: 5 [dynamic-wind #<procedure 57d3900 at ice-9/eval.scm:416:20 ()> ...]
90: 4 [dynamic-wind #<procedure 5c332a0 at ice-9/boot-9.scm:1133:2 _> ...]
In ice-9/boot-9.scm:
867: 3 [call-with-input-file "jedi-0.9.0.dist-info/metadata.json" ...]
In ice-9/eval.scm:
411: 2 [eval # #]
387: 1 [eval # #]
In unknown file:
?: 0 [list-ref #f 0]

This stacktrace is ... unhelpful. I think there was a post somewhere where it detailed how to debug that but I can't find it again :(

$ cat metadata.json
{"classifiers": ["Development Status :: 4 - Beta", "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Editors :: Integrated Development Environments (IDE)", "Topic :: Utilities"], "summary": "An autocompletion tool for Python that can be used for text editors.", "platform": "any", "generator": "bdist_wheel (0.24.0)", "metadata_version": "2.0", "version": "0.9.0", "extensions": {"python.details": {"contacts": [{"role": "author", "email": "davidhalter88@gmail.com", "name": "David Halter"}], "project_urls": {"Home": "https://github.com/davidhalter/jedi"},"document_names": {"description": "DESCRIPTION.rst"}}}, "license": "MIT", "keywords": ["python", "completion", "refactoring", "vim"], "name": "jedi"}
Ben Woodcroft wrote 9 years ago
57637F6A.3010706@uq.edu.au
On 17/06/16 14:16, Danny Milosavljevic wrote:
Toggle quote (43 lines)
> $ guix import pypi jedi
>
> Starting download of /tmp/guix-file.n01KoB
> From https://pypi.python.org/packages/3a/37/629080b92b87bc65e3b1b4f5d539e22aa5dc45637eab0dd4b0cd8cf236c2/jedi-0.9.0.tar.gz...
> ….0.tar.gz 326KiB 402KiB/s 00:01 [####################] 100.0%
>
> Starting download of /tmp/guix-file.CbhRLk
> From https://pypi.python.org/packages/c4/59/e48a369168a84c8aef9127c227fc3b9f53bc9c528b24c2cda20487bc2deb/jedi-0.9.0-py2.py3-none-any.whl...
> …py3-none-any.whl 154KiB 291KiB/s 00:01 [####################] 100.0%
> Backtrace:
> In ice-9/boot-9.scm:
> 157: 19 [catch srfi-34 #<procedure 57736c0 at ice-9/eval.scm:416:20 ()> ...]
> In ice-9/r4rs.scm:
> 90: 18 [dynamic-wind #<procedure 5773570 at ice-9/eval.scm:416:20 ()> ...]
> In ice-9/eval.scm:
> 387: 17 [eval # #]
> 387: 16 [eval # #]
> 387: 15 [eval # #]
> 387: 14 [eval # #]
> 387: 13 [eval # #]
> 387: 12 [eval # #]
> 387: 11 [eval # #]
> 387: 10 [eval # #]
> 387: 9 [eval # #]
> 387: 8 [eval # #]
> 387: 7 [eval # #]
> 411: 6 [eval # #]
> In ice-9/r4rs.scm:
> 90: 5 [dynamic-wind #<procedure 57d3900 at ice-9/eval.scm:416:20 ()> ...]
> 90: 4 [dynamic-wind #<procedure 5c332a0 at ice-9/boot-9.scm:1133:2 _> ...]
> In ice-9/boot-9.scm:
> 867: 3 [call-with-input-file "jedi-0.9.0.dist-info/metadata.json" ...]
> In ice-9/eval.scm:
> 411: 2 [eval # #]
> 387: 1 [eval # #]
> In unknown file:
> ?: 0 [list-ref #f 0]
>
> This stacktrace is ... unhelpful. I think there was a post somewhere where it detailed how to debug that but I can't find it again :(
>
> $ cat metadata.json
> {"classifiers": ["Development Status :: 4 - Beta", "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Editors :: Integrated Development Environments (IDE)", "Topic :: Utilities"], "summary": "An autocompletion tool for Python that can be used for text editors.", "platform": "any", "generator": "bdist_wheel (0.24.0)", "metadata_version": "2.0", "version": "0.9.0", "extensions": {"python.details": {"contacts": [{"role": "author", "email": "davidhalter88@gmail.com", "name": "David Halter"}], "project_urls": {"Home": "https://github.com/davidhalter/jedi"}, "document_names": {"description": "DESCRIPTION.rst"}}}, "license": "MIT", "keywords": ["python", "completion", "refactoring", "vim"], "name": "jedi"}

I can confirm this. Running from the git repo gives a better stack trace
(below). I think this might be due to the lack of "run_requires" in the
json file. Do you think the solution might be to not require one? If so
do you want to have a go at fixing this?

Thanks.

$ ./pre-inst-env guix import pypi jedi

Starting download of /tmp/guix-file.ohIhq3
From
….0.tar.gz 326KiB 175KiB/s 00:02
[####################] 100.0%

Starting download of /tmp/guix-file.nXlt3z
From
…py3-none-any.whl 154KiB 161KiB/s 00:01
[####################] 100.0%
Backtrace:
In ice-9/boot-9.scm:
63: 19 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
432: 18 [eval # #]
In ice-9/boot-9.scm:
2401: 17 [save-module-excursion #<procedure 2586940 at
ice-9/boot-9.scm:4045:3 ()>]
4050: 16 [#<procedure 2586940 at ice-9/boot-9.scm:4045:3 ()>]
1724: 15 [%start-stack load-stack ...]
1729: 14 [#<procedure 259cea0 ()>]
In unknown file:
?: 13 [primitive-load "/home/ben/git/guix/scripts/guix"]
In guix/ui.scm:
1209: 12 [run-guix-command import "pypi" "jedi"]
In guix/scripts/import.scm:
110: 11 [guix-import "pypi" "jedi"]
In guix/scripts/import/pypi.scm:
84: 10 [guix-import-pypi "jedi"]
In ice-9/boot-9.scm:
157: 9 [catch srfi-34 #<procedure 5c5e360 at
guix/import/pypi.scm:278:9 ()> ...]
In ice-9/r4rs.scm:
90: 8 [dynamic-wind #<procedure 42120f0 at ice-9/eval.scm:416:20 ()> ...]
In guix/import/pypi.scm:
267: 7 [#<procedure 40678a0 at guix/import/pypi.scm:247:3 (temp port)>
"/tmp/guix-file.ohIhq3" ...]
236: 6 [compute-inputs
...]
223: 5 [guess-requirements
...]
In ice-9/r4rs.scm:
90: 4 [dynamic-wind #<procedure 5ccb7e0 at ice-9/eval.scm:416:20 ()> ...]
In guix/import/pypi.scm:
174: 3 [#<procedure 5ccab20 at guix/import/pypi.scm:191:5 (temp port)>
"/tmp/guix-file.nXlt3z" ...]
In ice-9/boot-9.scm:
867: 2 [call-with-input-file "jedi-0.9.0.dist-info/metadata.json" ...]
In guix/import/pypi.scm:
178: 1 [#<procedure 4472d00 at guix/import/pypi.scm:175:17 (port)>
#<input: jedi-0.9.0.dist-info/metadata.json 16>]
In unknown file:
?: 0 [list-ref #f 0]

ERROR: In procedure list-ref:
ERROR: In procedure list-ref: Wrong type argument in position 1: #f
Cyril Roelandt wrote 9 years ago
(address . bug-guix@gnu.org)
5763E548.5010001@gmail.com
On 06/17/2016 01:31 PM, Danny Milosavljevic wrote:
Toggle quote (6 lines)
> Thanks!
>
> I've asked the jedi maintainers, see <https://github.com/davidhalter/jedi/issues/733>
>
>

I quickly looked at the code, some of the dependencies are listed in
tox.ini (mostly those needed for testing), but there doesn't seem to be
anything in setup.py. Maybe there are no runtime requirements :)

Anyway, we should return an empty list when the 'run_requires' key is
missing from the JSON file.

Cyril.
Cyril Roelandt wrote 9 years ago
[PATCH] import: pypi: do not fail when 'run_requires' is missing from the metadata.
(address . 23780@debbugs.gnu.org)(name . Cyril Roelandt)(address . tipecaml@gmail.com)
1466167435-10265-1-git-send-email-tipecaml@gmail.com
* guix/import/pypi.scm (read-wheel-metadata): do not crash when 'run_requires'
is missing from the metadata.
---
guix/import/pypi.scm | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

Toggle diff (19 lines)
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 70ef507..f08d948 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -175,8 +175,10 @@ cannot determine package dependencies"))
(lambda (port)
(let* ((metadata (json->scm port))
(run_requires (hash-ref metadata "run_requires"))
- (requirements (hash-ref (list-ref run_requires 0)
- "requires")))
+ (requirements (if run_requires
+ (hash-ref (list-ref run_requires 0)
+ "requires")
+ '())))
(map (lambda (r)
(python->package-name (clean-requirement r)))
requirements)))))
--
2.6.2
Ludovic Courtès wrote 9 years ago
(name . Cyril Roelandt)(address . tipecaml@gmail.com)(address . 23780@debbugs.gnu.org)
8760t7vomp.fsf@gnu.org
Cyril Roelandt <tipecaml@gmail.com> skribis:

Toggle quote (3 lines)
> * guix/import/pypi.scm (read-wheel-metadata): do not crash when 'run_requires'
> is missing from the metadata.

[...]

Toggle quote (5 lines)
> + (requirements (if run_requires
> + (hash-ref (list-ref run_requires 0)
> + "requires")
> + '())))

Please align the ‘if’ branches with the condition. :-)

Otherwise LGTM, thanks for the quick fix!

Ludo’.
Ludovic Courtès wrote 9 years ago
(name . Cyril Roelandt)(address . tipecaml@gmail.com)(address . 23780-done@debbugs.gnu.org)
871t3hj9xw.fsf@gnu.org
Fixed by Cyril in commit aebd383d04b351465cfb14e4fd0949b67d4b282e.

Ludo'.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 23780@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 23780
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help