Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation from source tarball fails: gcc: error: aiohttp/_websocket.c: No such file or directory #3907

Closed
blueyed opened this issue Jul 16, 2019 · 3 comments

Comments

@blueyed
Copy link
Contributor

blueyed commented Jul 16, 2019

Installation via tarball fails:

% pip --version
pip 19.1.1 from …/pyenv/tmp-system-aiohttp-HweWsv/lib/python3.7/site-packages/pip (python 3.7)
% pip install https://github.com/aio-libs/aiohttp/archive/95ead73c65589002dea0d9d9ac532ff4533ed542.tar.gz
Looking in indexes: http://localhost:3141/root/pypi/+simple/
Collecting https://github.com/aio-libs/aiohttp/archive/master.tar.gz
  Downloading https://github.com/aio-libs/aiohttp/archive/master.tar.gz (814kB)
     |████████████████████████████████| 819kB 397kB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting chardet<4.0,>=2.0 (from aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/fc3/23ffcaeaed0e0/chardet-3.0.4-py2.py3-none-any.whl (133kB)
     |████████████████████████████████| 143kB 51.8MB/s
Collecting multidict<5.0,>=4.0 (from aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/c18/498c50c592638/multidict-4.5.2-cp37-cp37m-manylinux1_x86_64.whl (309kB)
     |████████████████████████████████| 317kB 79.4MB/s
Collecting yarl<2.0,>=1.0 (from aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/024/ecdc12bc02b32/yarl-1.3.0.tar.gz (159kB)
     |████████████████████████████████| 163kB 79.4MB/s
Collecting async-timeout<4.0,>=3.0 (from aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/429/1ca197d287d27/async_timeout-3.0.1-py3-none-any.whl
Collecting attrs>=17.3.0 (from aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/69c/0dbf2ed392de1/attrs-19.1.0-py2.py3-none-any.whl
Collecting idna>=2.0 (from yarl<2.0,>=1.0->aiohttp==4.0.0a0)
  Downloading http://localhost:3141/root/pypi/%2Bf/ea8/b7f6188e6fa11/idna-2.8-py2.py3-none-any.whl (58kB)
     |████████████████████████████████| 61kB 53.3MB/s
Building wheels for collected packages: aiohttp
  Building wheel for aiohttp (PEP 517) ... error
  ERROR: Complete output from command …/pyenv/tmp-system-aiohttp-HweWsv/bin/python …/pyenv/tmp-system-aiohttp-HweWsv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmprokc72hk:
  ERROR: **********************
  * Accellerated build *
  **********************
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/worker.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_ws.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_urldispatcher.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_server.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_runner.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_routedef.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_response.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_request.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_protocol.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_middlewares.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_log.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_fileresponse.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_exceptions.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web_app.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/web.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/typedefs.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/tracing.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/test_utils.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/tcp_helpers.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/streams.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/signals.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/resolver.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/pytest_plugin.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/payload.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/multipart.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/log.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/locks.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/http_writer.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/http_websocket.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/http_parser.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/http_exceptions.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/http.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/helpers.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/hdrs.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/frozenlist.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/formdata.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/cookiejar.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/connector.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/client_ws.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/client_reqrep.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/client_proto.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/client_exceptions.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/client.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/base_protocol.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/abc.py -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/__init__.py -> build/lib.linux-x86_64-3.7/aiohttp
  running egg_info
  writing aiohttp.egg-info/PKG-INFO
  writing dependency_links to aiohttp.egg-info/dependency_links.txt
  writing requirements to aiohttp.egg-info/requires.txt
  writing top-level names to aiohttp.egg-info/top_level.txt
  reading manifest file 'aiohttp.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  warning: no files found matching '*' under directory 'vendor'
  warning: no files found matching 'aiohttp' anywhere in distribution
  warning: no previously-included files matching '*.pyc' found anywhere in distribution
  warning: no previously-included files matching '*.pyd' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.lib' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '*.a' found anywhere in distribution
  warning: no previously-included files matching '*.obj' found anywhere in distribution
  warning: no previously-included files found matching 'aiohttp/*.html'
  no previously-included directories found matching 'docs/_build'
  writing manifest file 'aiohttp.egg-info/SOURCES.txt'
  copying aiohttp/_cparser.pxd -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_find_header.c -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_find_header.h -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_find_header.pxd -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_frozenlist.pyx -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_headers.pxi -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_helpers.pyi -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_helpers.pyx -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_http_parser.pyx -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_http_writer.pyx -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/_websocket.pyx -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/frozenlist.pyi -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/py.typed -> build/lib.linux-x86_64-3.7/aiohttp
  copying aiohttp/signals.pyi -> build/lib.linux-x86_64-3.7/aiohttp
  running build_ext
  building 'aiohttp._websocket' extension
  creating build/temp.linux-x86_64-3.7
  creating build/temp.linux-x86_64-3.7/aiohttp
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC -I…/pyenv/tmp-system-aiohttp-HweWsv/include -I/usr/include/python3.7m -c aiohttp/_websocket.c -o build/temp.linux-x86_64-3.7/aiohttp/_websocket.o
  gcc: error: aiohttp/_websocket.c: No such file or directory
  gcc: fatal error: no input files
  compilation terminated.
  Traceback (most recent call last):
    File "/usr/lib/python3.7/distutils/unixccompiler.py", line 118, in _compile
      extra_postargs)
    File "/usr/lib/python3.7/distutils/ccompiler.py", line 909, in spawn
      spawn(cmd, dry_run=self.dry_run)
    File "/usr/lib/python3.7/distutils/spawn.py", line 36, in spawn
      _spawn_posix(cmd, search_path, dry_run=dry_run)
    File "/usr/lib/python3.7/distutils/spawn.py", line 159, in _spawn_posix
      % (cmd, exit_status))
  distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "setup.py", line 65, in build_extension
      build_ext.build_extension(self, ext)
    File "/usr/lib/python3.7/distutils/command/build_ext.py", line 534, in build_extension
      depends=ext.depends)
    File "/usr/lib/python3.7/distutils/ccompiler.py", line 574, in compile
      self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
    File "/usr/lib/python3.7/distutils/unixccompiler.py", line 120, in _compile
      raise CompileError(msg)
  distutils.errors.CompileError: command 'gcc' failed with exit status 1

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "…/pyenv/tmp-system-aiohttp-HweWsv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
      main()
    File "…/pyenv/tmp-system-aiohttp-HweWsv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "…/pyenv/tmp-system-aiohttp-HweWsv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 141, in build_wheel
      metadata_directory)
    File "/tmp/pip-build-env-u4w7c90l/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 192, in build_wheel
      self.run_setup()
    File "/tmp/pip-build-env-u4w7c90l/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 234, in run_setup
      self).run_setup(setup_script=setup_script)
    File "/tmp/pip-build-env-u4w7c90l/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 141, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 151, in <module>
      **args)
    File "/tmp/pip-build-env-u4w7c90l/overlay/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
      return distutils.core.setup(**attrs)
    File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-env-u4w7c90l/overlay/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 192, in run
      self.run_command('build')
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/usr/lib/python3.7/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "setup.py", line 59, in run
      build_ext.run(self)
    File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run
      self.build_extensions()
    File "/usr/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
      self._build_extensions_serial()
    File "/usr/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
      self.build_extension(ext)
    File "setup.py", line 68, in build_extension
      raise BuildFailed()
  __main__.BuildFailed
  ----------------------------------------
  ERROR: Failed building wheel for aiohttp
  Running setup.py clean for aiohttp
Failed to build aiohttp
ERROR: Could not build wheels for aiohttp which use PEP 517 and cannot be installed directly

This is due to aiohttp/_websocket.c missing in the source, and cython not being used since ab0e956 anymore automatically.

I think it is a valid use case to support, and e.g. aioresponses uses this in tox to test with aiohttp's master version.

@asvetlov
Copy link
Member

Github provides not a valid tarball, please never use it.
I don't know how to disable this feature on github.
The valid tarball source is PyPI, files published on PyPI have all generated files like _websocket.c included.

@blueyed
Copy link
Contributor Author

blueyed commented Jul 16, 2019

Yeah - but PyPI does not have snapshots of master for example.

So libs testing with aiohttp master need to have special setup code then I assume (e.g. within tox etc).

@asvetlov
Copy link
Member

Yes, testing from master requires preparing the master (compiling extensions etc).
Like if you want to test on CPython master you should compile it every time first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants