Issue 26610: test_venv.test_with_pip() fails when ctypes is missing (original) (raw)

pip/pep425tags.py requires ctypes, but it's not available on the OpenIndiana buildbot. I suggest to skip the test if ctypes is missing.

I don't know if it's possible to modify pip to make ctypes optional again.

http://buildbot.python.org/all/builders/AMD64%20OpenIndiana%203.x/builds/10407/steps/test/logs/stdio

====================================================================== FAIL: test_with_pip (test.test_venv.EnsurePipTest)

Traceback (most recent call last): File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/test/test_venv.py", line 364, in test_with_pip with_pip=True) subprocess.CalledProcessError: Command '['/tmp/tmpl3s6nv31/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/test/test_venv.py", line 370, in test_with_pip self.fail(msg.format(exc, details)) AssertionError: Command '['/tmp/tmpl3s6nv31/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

Subprocess Output Traceback (most recent call last): File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/runpy.py", line 184, in _run_module_as_main "main", mod_spec) File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/runpy.py", line 85, in _run_code exec(code, run_globals) File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/ensurepip/main.py", line 4, in ensurepip._main() File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/ensurepip/init.py", line 209, in _main default_pip=args.default_pip, File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/ensurepip/init.py", line 116, in bootstrap _run_pip(args + [p[0] for p in _PROJECTS], additional_paths) File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/ensurepip/init.py", line 40, in _run_pip import pip File "/tmp/tmpbfnwxnn2/pip-8.1.1-py2.py3-none-any.whl/pip/init.py", line 16, in File "/tmp/tmpbfnwxnn2/pip-8.1.1-py2.py3-none-any.whl/pip/vcs/subversion.py", line 9, in File "/tmp/tmpbfnwxnn2/pip-8.1.1-py2.py3-none-any.whl/pip/index.py", line 30, in File "/tmp/tmpbfnwxnn2/pip-8.1.1-py2.py3-none-any.whl/pip/wheel.py", line 32, in File "/tmp/tmpbfnwxnn2/pip-8.1.1-py2.py3-none-any.whl/pip/pep425tags.py", line 9, in File "/export/home/buildbot/64bits/3.x.cea-indiana-amd64/build/Lib/ctypes/init.py", line 7, in from _ctypes import Union, Structure, Array ImportError: No module named '_ctypes'

It shouldn't be hard to make ctypes optional in pip, it's only used to check if the OS we're running on is "manylinux" compatible, roughly checking the glibc version number.

These checks look low level, so it makes sense to use ctypes for that.

Worst case we can just conditon that check on ctypes existing.

Do you mean skipping the new "manylinux" thing if ctypes is missing? If yes, I agree with this option. In practice, types is only missing in very rare cases.