mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
[3.13] GH-121521: Detect when wasmtime is not installed in Tools/wasm/wasi.py
(GH-121522) (GH-121558)
GH-121521: Detect when wasmtime is not installed in `Tools/wasm/wasi.py` (GH-121522)
(cherry picked from commit f62161837e
)
Co-authored-by: Brett Cannon <brett@python.org>
This commit is contained in:
parent
20a6341324
commit
3824dc9fa3
1 changed files with 18 additions and 6 deletions
|
@ -26,6 +26,9 @@ 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")
|
||||
|
||||
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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
# The 8388608 value comes from `ulimit -s` under Linux
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue