https://github.com/python/cpython/commit/b15b81ed4f58196b35e3dd13b484f4c7a73e5bb8
commit: b15b81ed4f58196b35e3dd13b484f4c7a73e5bb8
branch: main
author: Brett Cannon <[email protected]>
committer: brettcannon <[email protected]>
date: 2024-08-15T10:30:08-07:00
summary:
GH-121634: have `wasi.py` accept the host target triple as an argument
(GH-123030)
files:
A Misc/NEWS.d/next/Build/2024-08-14-19-17-34.gh-issue-121634.eOMfHG.rst
M Tools/wasm/wasi.py
diff --git
a/Misc/NEWS.d/next/Build/2024-08-14-19-17-34.gh-issue-121634.eOMfHG.rst
b/Misc/NEWS.d/next/Build/2024-08-14-19-17-34.gh-issue-121634.eOMfHG.rst
new file mode 100644
index 00000000000000..025b6bca809898
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2024-08-14-19-17-34.gh-issue-121634.eOMfHG.rst
@@ -0,0 +1 @@
+Allow for specifying the target compile triple for WASI.
diff --git a/Tools/wasm/wasi.py b/Tools/wasm/wasi.py
index a14f58bdac0cb2..050e3723feb247 100644
--- a/Tools/wasm/wasi.py
+++ b/Tools/wasm/wasi.py
@@ -20,8 +20,6 @@
CROSS_BUILD_DIR = CHECKOUT / "cross-build"
BUILD_DIR = CROSS_BUILD_DIR / "build"
-HOST_TRIPLE = "wasm32-wasi"
-HOST_DIR = CROSS_BUILD_DIR / HOST_TRIPLE
LOCAL_SETUP = CHECKOUT / "Modules" / "Setup.local"
LOCAL_SETUP_MARKER = "# Generated by Tools/wasm/wasi.py\n".encode("utf-8")
@@ -63,12 +61,17 @@ def subdir(working_dir, *, clean_ok=False):
def decorator(func):
@functools.wraps(func)
def wrapper(context):
+ nonlocal working_dir
+
+ if callable(working_dir):
+ working_dir = working_dir(context)
try:
tput_output = subprocess.check_output(["tput", "cols"],
encoding="utf-8")
- terminal_width = int(tput_output.strip())
except subprocess.CalledProcessError:
terminal_width = 80
+ else:
+ terminal_width = int(tput_output.strip())
print("⎯" * terminal_width)
print("📁", working_dir)
if (clean_ok and getattr(context, "clean", False) and
@@ -193,7 +196,7 @@ def wasi_sdk_env(context):
return env
-@subdir(HOST_DIR, clean_ok=True)
+@subdir(lambda context: CROSS_BUILD_DIR / context.host_triple, clean_ok=True)
def configure_wasi_python(context, working_dir):
"""Configure the WASI/host build."""
if not context.wasi_sdk_path or not context.wasi_sdk_path.exists():
@@ -238,7 +241,7 @@ def configure_wasi_python(context, working_dir):
# to find the stdlib due to Python not recognizing that it's being
# executed from within a checkout.
configure = [os.path.relpath(CHECKOUT / 'configure', working_dir),
- f"--host={HOST_TRIPLE}",
+ f"--host={context.host_triple}",
f"--build={build_platform()}",
f"--with-build-python={build_python}"]
if pydebug:
@@ -258,7 +261,7 @@ def configure_wasi_python(context, working_dir):
sys.stdout.flush()
-@subdir(HOST_DIR)
+@subdir(lambda context: CROSS_BUILD_DIR / context.host_triple)
def make_wasi_python(context, working_dir):
"""Run `make` for the WASI/host build."""
call(["make", "--jobs", str(cpu_count()), "all"],
@@ -342,6 +345,9 @@ def main():
help="Command template for running the WASI host "
"(default designed for wasmtime 14 or newer: "
f"`{default_host_runner}`)")
+ for subcommand in build, configure_host, make_host:
+ subcommand.add_argument("--host-triple", action="store",
default="wasm32-wasi",
+ help="The target triple for the WASI host build")
context = parser.parse_args()
_______________________________________________
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]