8000 [3.13] GH-121634: have `wasi.py` accept the host target triple as an argument (GH-123030) by miss-islington · Pull Request #123042 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

[3.13] GH-121634: have wasi.py accept the host target triple as an argument (GH-123030) #123042

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Allow for specifying the target compile triple for WASI.
18 changes: 12 additions & 6 deletions Tools/wasm/wasi.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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():
Expand Down Expand Up @@ -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:
Expand All @@ -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"],
Expand Down Expand Up @@ -343,6 +346,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()

Expand Down
Loading
0