https://github.com/python/cpython/commit/180d58cbcc0f7f34d6ba6186abf9c6399bd12433
commit: 180d58cbcc0f7f34d6ba6186abf9c6399bd12433
branch: main
author: Savannah Ostrowski <[email protected]>
committer: savannahostrowski <[email protected]>
date: 2026-02-28T00:23:12Z
summary:
GH-144533: Use wasmtime's --argv0 to auto-discover sysconfig in WASI builds
(#145328)
files:
A Misc/NEWS.d/next/Build/2026-02-27-18-10-02.gh-issue-144533.21fk9L.rst
M Platforms/WASI/__main__.py
diff --git
a/Misc/NEWS.d/next/Build/2026-02-27-18-10-02.gh-issue-144533.21fk9L.rst
b/Misc/NEWS.d/next/Build/2026-02-27-18-10-02.gh-issue-144533.21fk9L.rst
new file mode 100644
index 00000000000000..d6e0201b90c550
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2026-02-27-18-10-02.gh-issue-144533.21fk9L.rst
@@ -0,0 +1 @@
+Use wasmtime's ``--argv0`` to auto-discover sysconfig in WASI builds
diff --git a/Platforms/WASI/__main__.py b/Platforms/WASI/__main__.py
index 8302432fd2f106..471ac3297b2702 100644
--- a/Platforms/WASI/__main__.py
+++ b/Platforms/WASI/__main__.py
@@ -317,21 +317,8 @@ def configure_wasi_python(context, working_dir):
wasi_build_dir = working_dir.relative_to(CHECKOUT)
- python_build_dir = BUILD_DIR / "build"
- 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])
- 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 = {
- "PYTHONPATH": f"/{sysconfig_data_dir}",
+ "ARGV0": f"/{wasi_build_dir}/python.wasm",
"PYTHON_WASM": working_dir / "python.wasm",
}
# Check dynamically for wasmtime in case it was specified manually via
@@ -421,8 +408,8 @@ def main():
default_host_triple = config["targets"]["host-triple"]
default_host_runner = (
f"{WASMTIME_HOST_RUNNER_VAR} run "
- # For setting PYTHONPATH to the sysconfig data directory.
- "--env PYTHONPATH={PYTHONPATH} "
+ # Set argv0 so that getpath.py can auto-discover the sysconfig data
directory
+ "--argv0 {ARGV0} "
# Map the checkout to / to load the stdlib from /Lib.
f"--dir {os.fsdecode(CHECKOUT)}::/ "
# Flags involving --optimize, --codegen, --debug, --wasm, and --wasi
can be kept
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]