Skip to content

building wheel from sdist fails #320

Closed
@televi

Description

@televi
  • uvloop version: 0.14.0
  • Python version: 3.6 and 3.7
  • Platform: Linux (CentOS 7
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
  • Does uvloop behave differently from vanilla asyncio? How?: N/A

What I did:
pip wheel --global-option build_ext --global-option --inplace uvloop==0.14.0

What I expected:

The command would build uvloop and bundle it as a wheel for me.

What I saw:

The command fails with error: don't know how to compile C/C++ code on platform 'posix' with '<distutils.unixccompiler.UnixCCompiler object at 0x7f054bc1fa10>' compiler after build_ext runs (e.g. during the processing of bdist_wheel).

The (heavily) snipped output from the above command is:

</path/to/venv>/lib/python3.7/site-packages/pip/_internal/commands/wheel.py:117: UserWarning: Disabling all use of wheels due to the use of --build-option / --global-option / --install-option.
  cmdoptions.check_install_build_global(options)
Looking in indexes: https://pypi.org/simple, https://<private repo>/simple
Collecting uvloop==0.14.0
  Using cached uvloop-0.14.0.tar.gz (2.0 MB)
Building wheels for collected packages: uvloop
  Building wheel for uvloop (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: </path/to/venv>/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-12kxwkdh/uvloop/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-12kxwkdh/uvloop/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' build_ext --inplace bdist_wheel -d /tmp/pip-wheel-exvxqjuv
       cwd: /tmp/pip-wheel-12kxwkdh/uvloop/
  Complete output (226 lines):
  running build_ext

 ... <lots of successful build output

 building 'uvloop.loop' extension

... <more successful built output>

  copying build/lib.linux-x86_64-3.7/uvloop/loop.cpython-37m-x86_64-linux-gnu.so -> uvloop
  running bdist_wheel
  running build
  running build_py

... <lots of copying/writing for building the wheel>

  copying uvloop/includes/uv.pxd -> build/lib.linux-x86_64-3.7/uvloop/includes
  running build_ext
  error: don't know how to compile C/C++ code on platform 'posix' with '<distutils.unixccompiler.UnixCCompiler object at 0x7f054bc1fa10>' compiler
  ----------------------------------------
  ERROR: Failed building wheel for uvloop
  Running setup.py clean for uvloop
Failed to build uvloop
ERROR: Failed to build one or more wheels

Other observations:

The pip wheel command essentially downloads your sdist, unwinds it, cd's to that directory, and runs python setup.py build_ext --inplace bdist_wheel This mimics your make file other than the fact that build_ext and bdist_wheel are on one command line.

If I manually run python setup.py build_ext --inplace && python setup.py bdist_wheel, then the wheel is successfully built. I can't tell exactly how, but it seems like something is building the extension in bdist_wheel instead of simply inheriting what was build by build_ext. That, in turn, is triggering what may be a latent distutils issue that I documented here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions