Skip to content

Commit

Permalink
pythonGH-121521: Detect when wasmtime is not installed in `Tools/wasm…
Browse files Browse the repository at this point in the history
…/wasi.py` (pythonGH-121522)
  • Loading branch information
brettcannon authored and noahbkim committed Jul 11, 2024
1 parent b6b1df3 commit 3804592
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions Tools/wasm/wasi.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
LOCAL_SETUP = CHECKOUT / "Modules" / "Setup.local"
LOCAL_SETUP_MARKER = "# Generated by Tools/wasm/wasi.py\n".encode("utf-8")

WASMTIME_VAR_NAME = "WASMTIME"
WASMTIME_HOST_RUNNER_VAR = f"{{{WASMTIME_VAR_NAME}}}"


def updated_env(updates={}):
"""Create a new dict representing the environment to use.
Expand Down Expand Up @@ -215,11 +218,20 @@ def configure_wasi_python(context, working_dir):

# Use PYTHONPATH to include sysconfig data which must be anchored to the
# WASI guest's `/` directory.
host_runner = context.host_runner.format(GUEST_DIR="/",
HOST_DIR=CHECKOUT,
ENV_VAR_NAME="PYTHONPATH",
ENV_VAR_VALUE=f"/{sysconfig_data}",
PYTHON_WASM=working_dir / "python.wasm")
args = {"GUEST_DIR": "/",
"HOST_DIR": CHECKOUT,
"ENV_VAR_NAME": "PYTHONPATH",
"ENV_VAR_VALUE": f"/{sysconfig_data}",
"PYTHON_WASM": working_dir / "python.wasm"}
# Check dynamically for wasmtime in case it was specified manually via
# `--host-runner`.
if WASMTIME_HOST_RUNNER_VAR in context.host_runner:
if wasmtime := shutil.which("wasmtime"):
args[WASMTIME_VAR_NAME] = wasmtime
else:
raise FileNotFoundError("wasmtime not found; download from "
"https://github.com/bytecodealliance/wasmtime")
host_runner = context.host_runner.format_map(args)
env_additions = {"CONFIG_SITE": config_site, "HOSTRUNNER": host_runner}
build_python = os.fsdecode(build_python_path())
# The path to `configure` MUST be relative, else `python.wasm` is unable
Expand Down Expand Up @@ -277,7 +289,7 @@ def clean_contents(context):


def main():
default_host_runner = (f"{shutil.which('wasmtime')} run "
default_host_runner = (f"{WASMTIME_HOST_RUNNER_VAR} run "
# Make sure the stack size will work for a pydebug
# build.
# Use 16 MiB stack.
Expand Down

0 comments on commit 3804592

Please sign in to comment.