Message363946
The commit 1ec63b62035e73111e204a0e03b83503e1c58f2e of bpo-39763 broke the Python compilation on AIX:
https://bugs.python.org/issue39763#msg363749
--
The last successful build was before the commit 1ec63b62035e73111e204a0e03b83503e1c58f2e:
https://buildbot.python.org/all/#/builders/119/builds/383
_socket compilation:
(...) -o build/lib.aix-7100-9898-32-3.9-pydebug/_socket.so
pythoninfo:
sys.path: [
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/target/lib/python39.zip',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/Lib',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/build/lib.aix-7100-9898-32-3.9-pydebug',
'/home/buildbot/.local/lib/python3.9/site-packages']
Both steps use "build/lib.aix-7100-9898-32-3.9-pydebug/" directory.
--
Recent failure:
https://buildbot.python.org/all/#/builders/119/builds/451
_socket compilation:
(...) -o build/lib.aix-7104-1806-32-3.9-pydebug/_socket.so
pythoninfo:
sys.path: [
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/target/lib/python39.zip',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/Lib',
'/home/buildbot/buildarea/3.x.aixtools-aix-power6/build/build/lib.aix-7100-9898-32-3.9-pydebug',
'/home/buildbot/.local/lib/python3.9/site-packages']
So the compilation uses "build/lib.aix-7104-1806-32-3.9-pydebug/" directory, whereas pythoninfo uses "build/lib.aix-7100-9898-32-3.9-pydebug/" directory.
It can explain why setup.py fails to import _socket later: it was built in a different directory.
--
I see that _aix_support._aix_bosmp64() has two code paths depending on the subprocess module can be imported:
# subprocess is not necessarily available early in the build process
# if not available, the config_vars are also definitely not available
# supply substitutes to bootstrap the build
try:
import subprocess
_have_subprocess = True
_tmp_bd = get_config_var("AIX_BUILDDATE")
_bgt = get_config_var("BUILD_GNU_TYPE")
except ImportError: # pragma: no cover
_have_subprocess = False
_tmp_bd = None
_bgt = "powerpc-ibm-aix6.1.7.0"
def _aix_bosmp64():
# type: () -> Tuple[str, int]
"""
Return a Tuple[str, int] e.g., ['7.1.4.34', 1806]
The fileset bos.mp64 is the AIX kernel. It's VRMF and builddate
reflect the current ABI levels of the runtime environment.
"""
if _have_subprocess:
# We expect all AIX systems to have lslpp installed in this location
out = subprocess.check_output(["/usr/bin/lslpp", "-Lqc", "bos.mp64"])
out = out.decode("utf-8").strip().split(":") # type: ignore
# Use str() and int() to help mypy see types
return str(out[2]), int(out[-1])
else:
from os import uname
osname, host, release, version, machine = uname()
return "{}.{}.0.0".format(version, release), _MISSING_BD
--
_aix_support._aix_bosmp64() is called by _aix_support.aix_platform() which is called by get_host_platform() of distutils.util.
Currently, setup.py does:
* Inject _bootsubprocess into sys.modules['subprocess'] so "import subprocess" works
* Build all C extensions
* Remove sys.modules['subprocess'], so the next "import subprocess" may or may not load Lib/subprocess.py which uses the newly built C extensions like _posixsubprocess and select
* Attempt to load C extensions: if an import fails, rename the file: it happens for _asyncio on AIX, that's the bug |
|
Date |
User |
Action |
Args |
2020-03-11 17:42:14 | vstinner | set | recipients:
+ vstinner |
2020-03-11 17:42:14 | vstinner | set | messageid: <1583948534.42.0.125038756594.issue39936@roundup.psfhosted.org> |
2020-03-11 17:42:14 | vstinner | link | issue39936 messages |
2020-03-11 17:42:14 | vstinner | create | |
|