mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
GH-131769: fix detecting a pydebug build of the build Python when building for WASI (GH-134015)
This commit is contained in:
parent
9b292ff022
commit
2da2be4b84
2 changed files with 15 additions and 8 deletions
|
@ -0,0 +1 @@
|
|||
Fix detecting when the build Python in a cross-build is a pydebug build.
|
|
@ -112,7 +112,7 @@ def call(command, *, quiet, **kwargs):
|
|||
|
||||
def build_platform():
|
||||
"""The name of the build/host platform."""
|
||||
# Can also be found via `config.guess`.`
|
||||
# Can also be found via `config.guess`.
|
||||
return sysconfig.get_config_var("BUILD_GNU_TYPE")
|
||||
|
||||
|
||||
|
@ -128,6 +128,15 @@ def build_python_path():
|
|||
return binary
|
||||
|
||||
|
||||
def build_python_is_pydebug():
|
||||
"""Find out if the build Python is a pydebug build."""
|
||||
test = "import sys, test.support; sys.exit(test.support.Py_DEBUG)"
|
||||
result = subprocess.run([build_python_path(), "-c", test],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
return bool(result.returncode)
|
||||
|
||||
|
||||
@subdir(BUILD_DIR, clean_ok=True)
|
||||
def configure_build_python(context, working_dir):
|
||||
"""Configure the build/host Python."""
|
||||
|
@ -214,18 +223,15 @@ def configure_wasi_python(context, working_dir):
|
|||
lib_dirs = list(python_build_dir.glob("lib.*"))
|
||||
assert len(lib_dirs) == 1, f"Expected a single lib.* directory in {python_build_dir}"
|
||||
lib_dir = os.fsdecode(lib_dirs[0])
|
||||
pydebug = lib_dir.endswith("-pydebug")
|
||||
python_version = lib_dir.removesuffix("-pydebug").rpartition("-")[-1]
|
||||
sysconfig_data = f"{wasi_build_dir}/build/lib.wasi-wasm32-{python_version}"
|
||||
if pydebug:
|
||||
sysconfig_data += "-pydebug"
|
||||
python_version = lib_dir.rpartition("-")[-1]
|
||||
sysconfig_data_dir = f"{wasi_build_dir}/build/lib.wasi-wasm32-{python_version}"
|
||||
|
||||
# Use PYTHONPATH to include sysconfig data which must be anchored to the
|
||||
# WASI guest's `/` directory.
|
||||
args = {"GUEST_DIR": "/",
|
||||
"HOST_DIR": CHECKOUT,
|
||||
"ENV_VAR_NAME": "PYTHONPATH",
|
||||
"ENV_VAR_VALUE": f"/{sysconfig_data}",
|
||||
"ENV_VAR_VALUE": f"/{sysconfig_data_dir}",
|
||||
"PYTHON_WASM": working_dir / "python.wasm"}
|
||||
# Check dynamically for wasmtime in case it was specified manually via
|
||||
# `--host-runner`.
|
||||
|
@ -245,7 +251,7 @@ def configure_wasi_python(context, working_dir):
|
|||
f"--host={context.host_triple}",
|
||||
f"--build={build_platform()}",
|
||||
f"--with-build-python={build_python}"]
|
||||
if pydebug:
|
||||
if build_python_is_pydebug():
|
||||
configure.append("--with-pydebug")
|
||||
if context.args:
|
||||
configure.extend(context.args)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue