Skip to content
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
33 changes: 16 additions & 17 deletions Tools/wasm/wasi/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
import sysconfig
import tempfile

CHECKOUT = pathlib.Path(__file__).parent.parent.parent.parent
HERE = pathlib.Path(__file__).parent

CHECKOUT = HERE.parent.parent.parent
assert (CHECKOUT / "configure").is_file(), (
"Please update the location of the file"
)
Expand Down Expand Up @@ -304,9 +306,7 @@ def configure_wasi_python(context, working_dir):
"specify via $WASI_SDK_PATH or --wasi-sdk"
)

config_site = os.fsdecode(
CHECKOUT / "Tools" / "wasm" / "wasi" / "config.site-wasm32-wasi"
)
config_site = os.fsdecode(HERE / "config.site-wasm32-wasi")

wasi_build_dir = working_dir.relative_to(CHECKOUT)

Expand All @@ -324,10 +324,7 @@ def configure_wasi_python(context, working_dir):
# Use PYTHONPATH to include sysconfig data which must be anchored to the
# WASI guest's `/` directory.
args = {
"GUEST_DIR": "/",
"HOST_DIR": CHECKOUT,
"ENV_VAR_NAME": "PYTHONPATH",
"ENV_VAR_VALUE": f"/{sysconfig_data_dir}",
"PYTHONPATH": f"/{sysconfig_data_dir}",
"PYTHON_WASM": working_dir / "python.wasm",
}
# Check dynamically for wasmtime in case it was specified manually via
Expand Down Expand Up @@ -417,16 +414,18 @@ def main():
default_wasi_sdk = find_wasi_sdk()
default_host_runner = (
f"{WASMTIME_HOST_RUNNER_VAR} run "
# Make sure the stack size will work for a pydebug
# build.
# Use 32 MiB stack.
"--wasm max-wasm-stack=33554432 "
# Enable thread support; causes use of preview1.
# "--wasm threads=y --wasi threads=y "
# For setting PYTHONPATH to the sysconfig data directory.
"--env PYTHONPATH={PYTHONPATH} "
# Map the checkout to / to load the stdlib from /Lib.
"--dir {HOST_DIR}::{GUEST_DIR} "
# Set PYTHONPATH to the sysconfig data.
"--env {ENV_VAR_NAME}={ENV_VAR_VALUE}"
f"--dir {os.fsdecode(CHECKOUT)}::/ "
# Flags involving --optimize, --codegen, --debug, --wasm, and --wasi can be kept
# in a config file.
# We are using such a file to act as defaults in case a user wants to override
# only some of the settings themselves, make it easy to modify settings
# post-build so that they immediately apply to the Makefile instead of having to
# regenerate it, and allow for easy copying of the settings for anyone else who
# may want to use them.
f"--config {os.fsdecode(HERE / 'wasmtime.toml')}"
)
default_logdir = pathlib.Path(tempfile.gettempdir())

Expand Down
5 changes: 5 additions & 0 deletions Tools/wasm/wasi/wasmtime.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# https://docs.wasmtime.dev/cli-options.html#cli-options-using-toml-file

[wasm]
# 32 MiB; big enough for the test suite to pass under a debug build.
max-wasm-stack = 33_554_432
Loading