Package: python-pip-whl
Version: 20.1-1
Severity: normal

This is a resubmission of #917006 and #884353 with more color. I believe
this is a Debian-specific problem, despite what the resolution of
#884353 claims.

Steps to reproduce:

$ python3 -m venv venv
$ venv/bin/pip install future
...
  Building wheel for future (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /venv/bin/python3 -u -c 'import sys, setuptools, tokenize; 
sys.argv[0] = '"'"'/tmp/pip-install-dosvesc9/future/setup.py'"'"'; 
__file__='"'"'/tmp/pip-install-dosvesc9/future/setup.py'"'"';f=getattr(tokenize,
 '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
'"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
bdist_wheel -d /tmp/pip-wheel-tkrzl6ct
       cwd: /tmp/pip-install-dosvesc9/future/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help

  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for future
  Running setup.py clean for future
Failed to build future
Installing collected packages: future
    Running setup.py install for future ... done
Successfully installed future-0.18.2

The though the package is still installed, the bdist_wheel failure is
loud and rendered in red, and makes it look as though the operation has
failed.

The problem, as described in #884353, is that `import wheel` works in
pip's context (from <venv>/share/python-wheels), but the wheel module is
not on sys.path when pip invokes `venv/bin/python setup.py bdist_wheel`.

Note that upstream pip handles the situation correctly by only trying to
invoke `bdist_wheel` if `import wheel` succeeds

    
https://github.com/pypa/pip/blob/ea9cb06c49c0f5dddf5c00e6770ebd5228e851e1/src/pip/_internal/utils/misc.py#L892-L901

but Debian patches make this check invalid.

This also reproduces with the example from #884353, which uses
`virtualenv --no-wheel` instead of `python -m venv`:

$ virtualenv --no-wheel venv
$ venv/bin/pip install future
...

The outcome and root cause are the same.

The fix is likely to stop packaging wheel.whl with python-pip-whl. As
far as I can tell, its only effect is to make this test wrong. The wheel
module seems never to be used by pip outside of the test. Users who want
to build wheels with pip will need to install the python3-wheel package
anyway (or `pip install wheel` inside of a venv.)

-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.4.0-28-generic (SMP w/64 CPU cores)
Kernel taint flags: TAINT_WARN
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages python-pip-whl depends on:
ii  ca-certificates  20190110

python-pip-whl recommends no packages.

python-pip-whl suggests no packages.

-- no debconf information

Reply via email to