From 21c6f3e3aaed603f4cfea14198e51b6aaccb599f Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 11 Mar 2026 12:57:12 +0100 Subject: [PATCH 1/4] gh-145176 Move Emscripten files into Platforms/emscripten --- Makefile.pre.in | 4 ++-- {Tools/wasm => Platforms}/emscripten/__main__.py | 4 ++-- {Tools/wasm => Platforms}/emscripten/browser_test/.gitignore | 0 .../wasm => Platforms}/emscripten/browser_test/index.spec.ts | 0 .../emscripten/browser_test/package-lock.json | 0 .../wasm => Platforms}/emscripten/browser_test/package.json | 0 .../emscripten/browser_test/playwright.config.ts | 0 {Tools/wasm => Platforms}/emscripten/browser_test/run_test.sh | 0 .../emscripten/config.site-wasm32-emscripten | 2 +- {Tools/wasm => Platforms}/emscripten/config.toml | 0 {Tools/wasm => Platforms}/emscripten/make_libffi.sh | 0 {Tools/wasm => Platforms}/emscripten/node_entry.mjs | 0 {Tools/wasm => Platforms}/emscripten/prepare_external_wasm.py | 0 {Tools/wasm => Platforms}/emscripten/wasm_assets.py | 2 +- {Tools/wasm => Platforms}/emscripten/web_example/index.html | 0 .../emscripten/web_example/python.worker.mjs | 0 {Tools/wasm => Platforms}/emscripten/web_example/server.py | 0 .../emscripten/web_example_pyrepl_jspi/index.html | 0 .../emscripten/web_example_pyrepl_jspi/src.mjs | 0 Tools/wasm/README.md | 2 +- 20 files changed, 7 insertions(+), 7 deletions(-) rename {Tools/wasm => Platforms}/emscripten/__main__.py (99%) rename {Tools/wasm => Platforms}/emscripten/browser_test/.gitignore (100%) rename {Tools/wasm => Platforms}/emscripten/browser_test/index.spec.ts (100%) rename {Tools/wasm => Platforms}/emscripten/browser_test/package-lock.json (100%) rename {Tools/wasm => Platforms}/emscripten/browser_test/package.json (100%) rename {Tools/wasm => Platforms}/emscripten/browser_test/playwright.config.ts (100%) rename {Tools/wasm => Platforms}/emscripten/browser_test/run_test.sh (100%) rename {Tools/wasm => Platforms}/emscripten/config.site-wasm32-emscripten (97%) rename {Tools/wasm => Platforms}/emscripten/config.toml (100%) rename {Tools/wasm => Platforms}/emscripten/make_libffi.sh (100%) rename {Tools/wasm => Platforms}/emscripten/node_entry.mjs (100%) rename {Tools/wasm => Platforms}/emscripten/prepare_external_wasm.py (100%) rename {Tools/wasm => Platforms}/emscripten/wasm_assets.py (99%) rename {Tools/wasm => Platforms}/emscripten/web_example/index.html (100%) rename {Tools/wasm => Platforms}/emscripten/web_example/python.worker.mjs (100%) rename {Tools/wasm => Platforms}/emscripten/web_example/server.py (100%) rename {Tools/wasm => Platforms}/emscripten/web_example_pyrepl_jspi/index.html (100%) rename {Tools/wasm => Platforms}/emscripten/web_example_pyrepl_jspi/src.mjs (100%) diff --git a/Makefile.pre.in b/Makefile.pre.in index 120a6add38507f..5ea00537629de0 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1103,7 +1103,7 @@ $(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) # wasm32-emscripten browser web example -EMSCRIPTEN_DIR=$(srcdir)/Tools/wasm/emscripten +EMSCRIPTEN_DIR=$(srcdir)/Platforms/emscripten WEBEX_DIR=$(EMSCRIPTEN_DIR)/web_example/ ZIP_STDLIB=python$(VERSION)$(ABI_THREAD).zip @@ -3174,7 +3174,7 @@ Python/emscripten_trampoline_inner.wasm: $(srcdir)/Python/emscripten_trampoline_ $$(dirname $$(dirname $(CC)))/bin/clang -o $@ $< -mgc -O2 -Wl,--no-entry -Wl,--import-table -Wl,--import-memory -target wasm32-unknown-unknown -nostdlib Python/emscripten_trampoline_wasm.c: Python/emscripten_trampoline_inner.wasm - $(PYTHON_FOR_REGEN) $(srcdir)/Tools/wasm/emscripten/prepare_external_wasm.py $< $@ getWasmTrampolineModule + $(PYTHON_FOR_REGEN) $(srcdir)/Platforms/emscripten/prepare_external_wasm.py $< $@ getWasmTrampolineModule JIT_DEPS = \ $(srcdir)/Tools/jit/*.c \ diff --git a/Tools/wasm/emscripten/__main__.py b/Platforms/emscripten/__main__.py similarity index 99% rename from Tools/wasm/emscripten/__main__.py rename to Platforms/emscripten/__main__.py index b1a779777ae9fc..40c0922bc54941 100644 --- a/Tools/wasm/emscripten/__main__.py +++ b/Platforms/emscripten/__main__.py @@ -24,7 +24,7 @@ EMSCRIPTEN_DIR = Path(__file__).parent -CHECKOUT = EMSCRIPTEN_DIR.parent.parent.parent +CHECKOUT = EMSCRIPTEN_DIR.parent.parent CONFIG_FILE = EMSCRIPTEN_DIR / "config.toml" DEFAULT_CROSS_BUILD_DIR = CHECKOUT / "cross-build" @@ -74,7 +74,7 @@ def get_build_paths(cross_build_dir=None, emsdk_cache=None): LOCAL_SETUP = CHECKOUT / "Modules" / "Setup.local" -LOCAL_SETUP_MARKER = b"# Generated by Tools/wasm/emscripten.py\n" +LOCAL_SETUP_MARKER = b"# Generated by Platforms/wasm/emscripten.py\n" def validate_emsdk_version(emsdk_cache): diff --git a/Tools/wasm/emscripten/browser_test/.gitignore b/Platforms/emscripten/browser_test/.gitignore similarity index 100% rename from Tools/wasm/emscripten/browser_test/.gitignore rename to Platforms/emscripten/browser_test/.gitignore diff --git a/Tools/wasm/emscripten/browser_test/index.spec.ts b/Platforms/emscripten/browser_test/index.spec.ts similarity index 100% rename from Tools/wasm/emscripten/browser_test/index.spec.ts rename to Platforms/emscripten/browser_test/index.spec.ts diff --git a/Tools/wasm/emscripten/browser_test/package-lock.json b/Platforms/emscripten/browser_test/package-lock.json similarity index 100% rename from Tools/wasm/emscripten/browser_test/package-lock.json rename to Platforms/emscripten/browser_test/package-lock.json diff --git a/Tools/wasm/emscripten/browser_test/package.json b/Platforms/emscripten/browser_test/package.json similarity index 100% rename from Tools/wasm/emscripten/browser_test/package.json rename to Platforms/emscripten/browser_test/package.json diff --git a/Tools/wasm/emscripten/browser_test/playwright.config.ts b/Platforms/emscripten/browser_test/playwright.config.ts similarity index 100% rename from Tools/wasm/emscripten/browser_test/playwright.config.ts rename to Platforms/emscripten/browser_test/playwright.config.ts diff --git a/Tools/wasm/emscripten/browser_test/run_test.sh b/Platforms/emscripten/browser_test/run_test.sh similarity index 100% rename from Tools/wasm/emscripten/browser_test/run_test.sh rename to Platforms/emscripten/browser_test/run_test.sh diff --git a/Tools/wasm/emscripten/config.site-wasm32-emscripten b/Platforms/emscripten/config.site-wasm32-emscripten similarity index 97% rename from Tools/wasm/emscripten/config.site-wasm32-emscripten rename to Platforms/emscripten/config.site-wasm32-emscripten index 9f98e3f3c3bb1f..48247f96402145 100644 --- a/Tools/wasm/emscripten/config.site-wasm32-emscripten +++ b/Platforms/emscripten/config.site-wasm32-emscripten @@ -1,6 +1,6 @@ # config.site override for cross compiling to wasm32-emscripten platform # -# CONFIG_SITE=Tools/wasm/emscripten/config.site-wasm32-emscripten \ +# CONFIG_SITE=Platforms/wasm/emscripten/config.site-wasm32-emscripten \ # emconfigure ./configure --host=wasm32-unknown-emscripten --build=... # # Written by Christian Heimes diff --git a/Tools/wasm/emscripten/config.toml b/Platforms/emscripten/config.toml similarity index 100% rename from Tools/wasm/emscripten/config.toml rename to Platforms/emscripten/config.toml diff --git a/Tools/wasm/emscripten/make_libffi.sh b/Platforms/emscripten/make_libffi.sh similarity index 100% rename from Tools/wasm/emscripten/make_libffi.sh rename to Platforms/emscripten/make_libffi.sh diff --git a/Tools/wasm/emscripten/node_entry.mjs b/Platforms/emscripten/node_entry.mjs similarity index 100% rename from Tools/wasm/emscripten/node_entry.mjs rename to Platforms/emscripten/node_entry.mjs diff --git a/Tools/wasm/emscripten/prepare_external_wasm.py b/Platforms/emscripten/prepare_external_wasm.py similarity index 100% rename from Tools/wasm/emscripten/prepare_external_wasm.py rename to Platforms/emscripten/prepare_external_wasm.py diff --git a/Tools/wasm/emscripten/wasm_assets.py b/Platforms/emscripten/wasm_assets.py similarity index 99% rename from Tools/wasm/emscripten/wasm_assets.py rename to Platforms/emscripten/wasm_assets.py index 384790872353b2..8743e76e4449af 100755 --- a/Tools/wasm/emscripten/wasm_assets.py +++ b/Platforms/emscripten/wasm_assets.py @@ -17,7 +17,7 @@ import zipfile # source directory -SRCDIR = pathlib.Path(__file__).parents[3].absolute() +SRCDIR = pathlib.Path(__file__).parents[2].absolute() SRCDIR_LIB = SRCDIR / "Lib" diff --git a/Tools/wasm/emscripten/web_example/index.html b/Platforms/emscripten/web_example/index.html similarity index 100% rename from Tools/wasm/emscripten/web_example/index.html rename to Platforms/emscripten/web_example/index.html diff --git a/Tools/wasm/emscripten/web_example/python.worker.mjs b/Platforms/emscripten/web_example/python.worker.mjs similarity index 100% rename from Tools/wasm/emscripten/web_example/python.worker.mjs rename to Platforms/emscripten/web_example/python.worker.mjs diff --git a/Tools/wasm/emscripten/web_example/server.py b/Platforms/emscripten/web_example/server.py similarity index 100% rename from Tools/wasm/emscripten/web_example/server.py rename to Platforms/emscripten/web_example/server.py diff --git a/Tools/wasm/emscripten/web_example_pyrepl_jspi/index.html b/Platforms/emscripten/web_example_pyrepl_jspi/index.html similarity index 100% rename from Tools/wasm/emscripten/web_example_pyrepl_jspi/index.html rename to Platforms/emscripten/web_example_pyrepl_jspi/index.html diff --git a/Tools/wasm/emscripten/web_example_pyrepl_jspi/src.mjs b/Platforms/emscripten/web_example_pyrepl_jspi/src.mjs similarity index 100% rename from Tools/wasm/emscripten/web_example_pyrepl_jspi/src.mjs rename to Platforms/emscripten/web_example_pyrepl_jspi/src.mjs diff --git a/Tools/wasm/README.md b/Tools/wasm/README.md index 46228a5212a315..017bb3c8977d26 100644 --- a/Tools/wasm/README.md +++ b/Tools/wasm/README.md @@ -35,7 +35,7 @@ After building, you can run the full test suite with: ``` You can run the browser smoke test with: ```shell -./Tools/wasm/emscripten/browser_test/run_test.sh +./Platforms/emscripten/browser_test/run_test.sh ``` ### The Web Example From 4eaa1de8b7edd02ed766094927614c7a96462bcb Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 11 Mar 2026 13:01:21 +0100 Subject: [PATCH 2/4] Add shim __main__.py --- Tools/wasm/emscripten/__main__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Tools/wasm/emscripten/__main__.py diff --git a/Tools/wasm/emscripten/__main__.py b/Tools/wasm/emscripten/__main__.py new file mode 100644 index 00000000000000..d04c4d77bc9cfe --- /dev/null +++ b/Tools/wasm/emscripten/__main__.py @@ -0,0 +1,7 @@ +if __name__ == "__main__": + import pathlib + import runpy + + checkout = pathlib.Path(__file__).parents[3] + emscripten_dir = (checkout / "Platforms/emscripten").absolute() + runpy.run_path(str(emscripten_dir), run_name="__main__") From e8221bdae2cc71433e8ad42057c6361002ceceb5 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 11 Mar 2026 13:39:23 +0100 Subject: [PATCH 3/4] Fix --- Platforms/emscripten/config.site-wasm32-emscripten | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platforms/emscripten/config.site-wasm32-emscripten b/Platforms/emscripten/config.site-wasm32-emscripten index 48247f96402145..f69dbb8e779a42 100644 --- a/Platforms/emscripten/config.site-wasm32-emscripten +++ b/Platforms/emscripten/config.site-wasm32-emscripten @@ -1,6 +1,6 @@ # config.site override for cross compiling to wasm32-emscripten platform # -# CONFIG_SITE=Platforms/wasm/emscripten/config.site-wasm32-emscripten \ +# CONFIG_SITE=Platforms/emscripten/config.site-wasm32-emscripten \ # emconfigure ./configure --host=wasm32-unknown-emscripten --build=... # # Written by Christian Heimes From 6257cd3627d2f1cf4927691f931d48edbb0c5a85 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Thu, 12 Mar 2026 15:14:03 +0100 Subject: [PATCH 4/4] Add run_test.sh in old location to keep CI working --- {Tools/wasm => Platforms/emscripten}/README.md | 0 Tools/wasm/emscripten/browser_test/run_test.sh | 3 +++ 2 files changed, 3 insertions(+) rename {Tools/wasm => Platforms/emscripten}/README.md (100%) create mode 100755 Tools/wasm/emscripten/browser_test/run_test.sh diff --git a/Tools/wasm/README.md b/Platforms/emscripten/README.md similarity index 100% rename from Tools/wasm/README.md rename to Platforms/emscripten/README.md diff --git a/Tools/wasm/emscripten/browser_test/run_test.sh b/Tools/wasm/emscripten/browser_test/run_test.sh new file mode 100755 index 00000000000000..ed8cae7bf23b29 --- /dev/null +++ b/Tools/wasm/emscripten/browser_test/run_test.sh @@ -0,0 +1,3 @@ +#!/bin/bash +# Redirect to new location +exec "$(dirname "$0")/../../../../Platforms/emscripten/browser_test/run_test.sh" "$@"