Issue 30273: The coverage job is broken: distutils build_ext fails on None (original) (raw)

Issue30273

Created on 2017-05-04 20:51 by vstinner, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 1464 merged vstinner,2017-05-04 21:09
PR 1465 merged vstinner,2017-05-04 23:56
PR 1515 merged python-dev,2017-05-09 12:42
PR 1625 merged vstinner,2017-05-17 00:25
PR 1626 merged vstinner,2017-05-17 00:26
Messages (21)
msg293014 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-04 20:51
Bug reported by Antoine Pitrou on the python-committers mailing list. According to Brett Canon, the first failure was: https://travis-ci.org/python/cpython/jobs/228409786 And the regression is related to my commit a5c62a8e9f0de6c4133825a5710984a3cd5e102b: bpo-23404. Collecting coverage Downloading coverage-4.3.4.tar.gz (361kB) � Complete output from command python setup.py egg_info: running egg_info creating pip-egg-info/coverage.egg-info writing pip-egg-info/coverage.egg-info/PKG-INFO writing dependency_links to pip-egg-info/coverage.egg-info/dependency_links.txt writing entry points to pip-egg-info/coverage.egg-info/entry_points.txt writing top-level names to pip-egg-info/coverage.egg-info/top_level.txt writing manifest file 'pip-egg-info/coverage.egg-info/SOURCES.txt' warning: manifest_maker: standard file '-c' not found Traceback (most recent call last): File "", line 1, in File "/tmp/pip-build-ewtgqc2r/coverage/setup.py", line 204, in main() File "/tmp/pip-build-ewtgqc2r/coverage/setup.py", line 194, in main setup(**setup_args) File "/home/travis/build/python/cpython/Lib/distutils/core.py", line 148, in setup dist.run_commands() File "/home/travis/build/python/cpython/Lib/distutils/dist.py", line 955, in run_commands self.run_command(cmd) File "/home/travis/build/python/cpython/Lib/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/home/travis/build/python/cpython/venv/lib/python3.7/site-packages/setuptools/command/egg_info.py", line 279, in run self.find_sources() File "/home/travis/build/python/cpython/venv/lib/python3.7/site-packages/setuptools/command/egg_info.py", line 306, in find_sources mm.run() File "/home/travis/build/python/cpython/venv/lib/python3.7/site-packages/setuptools/command/egg_info.py", line 533, in run self.add_defaults() File "/home/travis/build/python/cpython/venv/lib/python3.7/site-packages/setuptools/command/egg_info.py", line 562, in add_defaults sdist.add_defaults(self) File "/home/travis/build/python/cpython/Lib/distutils/command/sdist.py", line 228, in add_defaults self._add_defaults_ext() File "/home/travis/build/python/cpython/Lib/distutils/command/sdist.py", line 311, in _add_defaults_ext build_ext = self.get_finalized_command('build_ext') File "/home/travis/build/python/cpython/Lib/distutils/cmd.py", line 299, in get_finalized_command cmd_obj.ensure_finalized() File "/home/travis/build/python/cpython/Lib/distutils/cmd.py", line 107, in ensure_finalized self.finalize_options() File "/home/travis/build/python/cpython/Lib/distutils/command/build_ext.py", line 150, in finalize_options py_include = sysconfig.get_python_inc() File "/home/travis/build/python/cpython/Lib/distutils/sysconfig.py", line 100, in get_python_inc incdir = os.path.join(_sys_home, get_config_var('AST_H_DIR')) File "/home/travis/build/python/cpython/Lib/posixpath.py", line 92, in join genericpath._check_arg_types('join', a, *p) File "/home/travis/build/python/cpython/Lib/genericpath.py", line 149, in _check_arg_types (funcname, s.__class__.__name__)) from None TypeError: join() argument must be str or bytes, not 'NoneType' ---------------------------------------- �Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ewtgqc2r/coverage/�
msg293015 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-04 20:55
To reproduce the bug, build the master branch of Python and then run: ./python -m venv venv ./venv/bin/python -m pip install -U coverage Or just: $ ./venv/bin/python -c 'from distutils import sysconfig; print(sysconfig.get_python_inc())' Traceback (most recent call last): File "", line 1, in File "/home/haypo/prog/python/master/Lib/distutils/sysconfig.py", line 100, in get_python_inc incdir = os.path.join(_sys_home, get_config_var('AST_H_DIR')) File "/home/haypo/prog/python/master/Lib/posixpath.py", line 92, in join genericpath._check_arg_types('join', a, *p) File "/home/haypo/prog/python/master/Lib/genericpath.py", line 149, in _check_arg_types (funcname, s.__class__.__name__)) from None TypeError: join() argument must be str or bytes, not 'NoneType'
msg293016 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-04 21:07
> get_config_var('AST_H_DIR') Oh, I see. My commit a5c62a8e9f0de6c4133825a5710984a3cd5e102b removed multiple variables from Makefile.pre.in to simplify it, but I didn't notice that some of them (only AST_H_DIR?) were used outside Makefile.pre.in. I completely forgot the evil sysconfig (evil in term of backward compatibility...). I removed the following variables from Makefile.pre.in: * @GENERATED_COMMENT@ * ASDLGEN * ASDLGEN_FILES * AST_ASDL * AST_C * AST_C_DIR * AST_H * AST_H_DIR * GRAMMAR_C * GRAMMAR_H * GRAMMAR_INPUT * OPCODETARGETGEN * OPCODETARGETGEN_FILES * OPCODETARGETS_H * OPCODE_H * OPCODE_H_DIR * OPCODE_H_GEN * OPCODE_H_SCRIPT * PYTHON_FOR_GEN (renamed to PYTHON_FOR_REGEN) I didn't see the point of the AST_H_DIR variable since its value was hardcoded to "Include" and it was only used to regenerate generated files related to AST. I don't understand why sysconfig chose this specific variable to get the "Include" subdirectory!? I'm writing a fix to replace AST_H_DIR variable with "Include".
msg293017 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-04 21:29
New changeset b109a1d3360fc4bb87b9887264e3634632d392ca by Victor Stinner in branch 'master': bpo-30273: Update sysconfig (#1464) https://github.com/python/cpython/commit/b109a1d3360fc4bb87b9887264e3634632d392ca
msg293027 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-04 22:46
New changeset 9d02f562961efd12d3c8317a10916db7f77330cc by Victor Stinner in branch '3.6': [3.6] bpo-23404: make touch becomes make regen-all (#1405) (#1461) https://github.com/python/cpython/commit/9d02f562961efd12d3c8317a10916db7f77330cc
msg293028 - (view) Author: Jeremy Kloth (jkloth) * Date: 2017-05-04 22:55
The change to sysconfig *may* be a regression wrt bpo-15366. I'm not in the position to be able to check this possibility, ATM, but it is possible that other things have also changed since this was commited 5 years ago.
msg293029 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-05 00:15
> The change to sysconfig *may* be a regression wrt bpo-15366. Hum, I'm still able to create a venv and install coverage in the venv after my commit b109a1d3360fc4bb87b9887264e3634632d392ca, whereas this commit basically reverts the bpo-15366 fix.
msg293031 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-05 00:20
New changeset ab6b962ef241be97536573d7490ce1cfc74fde18 by Victor Stinner in branch '3.5': bpo-23404: make touch becomes make regen-all (#1405) (#1461) (#1465) https://github.com/python/cpython/commit/ab6b962ef241be97536573d7490ce1cfc74fde18
msg293035 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-05 01:28
Jeremy Kloth: "I'm not in the position to be able to check this possibility, ATM, but it is possible that other things have also changed since this was commited 5 years ago." I expect that many bugs have been fixed in virtualenv and venv modules, so maybe bpo-15366 was fixed indirectly? It would be nice if you can tests on your side, since I'm not confident in my own tests :-) I modified the build system of Python 2.7, 3.5, 3.6 and master (3.7). So you can pick any of these branches to run your test :-) I'm not sure that the bug affected or can affect Python 2.7.
msg293300 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-09 11:22
The coverage job has been fixed and I'm unable to reproduce bpo-15366 bug (my change doesn't seem to have introduced a regression), so I close the issue. I sent an email to python-dev to warn about this change, so maybe others will double check. @Jeremy: please double check my change to make sure that I didn't introduce a regression.
msg293304 - (view) Author: Jeremy Kloth (jkloth) * Date: 2017-05-09 12:52
PR1515 addresses the issue from bpo-15366 (venv from Python compiled with builddir != srcdir). It seems that the original fix from bpo-15366 no longer worked. This addresses that.
msg293306 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-09 13:07
I reopen the issue since Jeremy posted a new PR.
msg293308 - (view) Author: Jeremy Kloth (jkloth) * Date: 2017-05-09 13:15
Yeah, sorry, I was working (fighting ;) with the new GitHub workflow while you updated the status.
msg293320 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-09 15:21
Ok, I reproduced the bug: cd ~/prog/python/master git clean -fdx mkdir ~/build_cpython cd ~/build_cpython/ ~/prog/python/master/configure --with-pydebug --prefix=/home/haypo/prefix make ./python -m venv ~/venv cd ~/venv . bin/activate python -m pip install fat => error on missing Python.h
msg293321 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-09 15:24
New changeset dbdea629e2e0e4bd8845aa55041e0a0ca4172cf3 by Victor Stinner (Jeremy Kloth) in branch 'master': bpo-30273: update distutils.sysconfig for venv's created from Python (#1515) https://github.com/python/cpython/commit/dbdea629e2e0e4bd8845aa55041e0a0ca4172cf3
msg293832 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-17 00:58
New changeset 460945f22acd288e660b432b288d9d81655572bf by Victor Stinner in branch '3.6': bpo-30273: update distutils.sysconfig for venv's created from Python (#1515) (#1625) https://github.com/python/cpython/commit/460945f22acd288e660b432b288d9d81655572bf
msg293834 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-17 00:59
New changeset f01c0ec9fe571e8afd50d2f5180db3c0d7b613af by Victor Stinner in branch '3.5': bpo-30273: update distutils.sysconfig for venv's created from Python (#1515) (#1626) https://github.com/python/cpython/commit/f01c0ec9fe571e8afd50d2f5180db3c0d7b613af
msg294270 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2017-05-23 18:00
Can this be closed?
msg294283 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-23 20:35
Can someone please check if the job pass on all branches? If yes, please close the issue.
msg296868 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-06-26 09:58
Me: "Can someone please check if the job pass on all branches? If yes, please close the issue." Hum, I don't see the coverage job on my PR anymore. I don't know where it's gone. It seems like this issue is fixed, so I close it.
msg317067 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-05-18 23:42
https://github.com/python/cpython/pull/1515 has the "needs backport to 2.7" label, but I'm unable to reproduce the bug on Python 2.7: * Python 2.7 has no "venv" module * When I compile Python out of tree, and then use "virtualenv -p ./python VENV", I got the following error from virtualenv.py: AssertionError: Filename /home/vstinner/prog/python/2.7/Lib/os.py does not start with any of these prefixes: ['/usr/local'] So I removed the "needs backport to 2.7" label from the PR. I'm sorry, I don't know if Python 2.7 is affected or not. In case of doubt, I prefer to not backport the change.
History
Date User Action Args
2022-04-11 14:58:46 admin set github: 74459
2018-05-18 23:42:24 vstinner set messages: +
2017-06-26 09:58:56 vstinner set status: open -> closedresolution: fixedmessages: +
2017-05-23 20:35:27 vstinner set messages: +
2017-05-23 18:00:24 brett.cannon set nosy: + brett.cannonmessages: +
2017-05-17 00:59:26 vstinner set messages: +
2017-05-17 00:58:04 vstinner set messages: +
2017-05-17 00:26:07 vstinner set pull_requests: + <pull%5Frequest1716>
2017-05-17 00:25:28 vstinner set pull_requests: + <pull%5Frequest1714>
2017-05-09 15:24:15 vstinner set messages: +
2017-05-09 15:21:29 vstinner set messages: +
2017-05-09 13:15:53 jkloth set messages: +
2017-05-09 13:07:59 vstinner set status: closed -> openresolution: fixed -> (no value)messages: +
2017-05-09 12:52:50 jkloth set messages: +
2017-05-09 12:42:33 python-dev set pull_requests: + <pull%5Frequest1614>
2017-05-09 11:22:11 vstinner set status: open -> closedresolution: fixedmessages: + stage: resolved
2017-05-08 22:19:07 brett.cannon set assignee: vstinner
2017-05-05 01:28:20 vstinner set messages: +
2017-05-05 00:20:03 vstinner set messages: +
2017-05-05 00:15:39 vstinner set messages: +
2017-05-04 23:56:57 vstinner set pull_requests: + <pull%5Frequest1564>
2017-05-04 22:55:12 jkloth set nosy: + jklothmessages: +
2017-05-04 22:46:59 vstinner set messages: +
2017-05-04 21:29:11 vstinner set messages: +
2017-05-04 21:09:00 vstinner set pull_requests: + <pull%5Frequest1561>
2017-05-04 21:07:53 vstinner set messages: +
2017-05-04 20:55:16 vstinner set messages: +
2017-05-04 20:51:05 vstinner create