From 0953200b136bcb3293cc1bd57a062796ffcd529d Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 6 Aug 2025 12:28:54 -0700 Subject: [PATCH] GH-137484: Have `Tools/wasm/wasi` use the build triple instead of "build" (GH-37485) This should help prevent issuse where something like a container is used to do one build and then someone tries to build again locally. --- ...25-08-06-11-54-55.gh-issue-137484.8iFAQs.rst | 2 ++ Tools/wasm/wasi/__main__.py | 17 ++++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) create mode 100644 Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst diff --git a/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst b/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst new file mode 100644 index 000000000000..bd7bc0984ecf --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst @@ -0,0 +1,2 @@ +Have ``Tools/wasm/wasi`` put the build Python into a directory named after +the build triple instead of "build". diff --git a/Tools/wasm/wasi/__main__.py b/Tools/wasm/wasi/__main__.py index fdd93d5c0aa4..973d78caa084 100644 --- a/Tools/wasm/wasi/__main__.py +++ b/Tools/wasm/wasi/__main__.py @@ -20,7 +20,8 @@ CHECKOUT = pathlib.Path(__file__).parent.parent.parent.parent assert (CHECKOUT / "configure").is_file(), "Please update the location of the file" CROSS_BUILD_DIR = CHECKOUT / "cross-build" -BUILD_DIR = CROSS_BUILD_DIR / "build" +# Build platform can also be found via `config.guess`. +BUILD_DIR = CROSS_BUILD_DIR / sysconfig.get_config_var("BUILD_GNU_TYPE") LOCAL_SETUP = CHECKOUT / "Modules" / "Setup.local" LOCAL_SETUP_MARKER = ("# Generated by Tools/wasm/wasi .\n" @@ -80,7 +81,7 @@ def subdir(working_dir, *, clean_ok=False): print("📁", working_dir) if (clean_ok and getattr(context, "clean", False) and working_dir.exists()): - print(f"🚮 Deleting directory (--clean)...") + print("🚮 Deleting directory (--clean)...") shutil.rmtree(working_dir) working_dir.mkdir(parents=True, exist_ok=True) @@ -120,12 +121,6 @@ def call(command, *, context=None, quiet=False, logdir=None, **kwargs): subprocess.check_call(command, **kwargs, stdout=stdout, stderr=stderr) -def build_platform(): - """The name of the build/host platform.""" - # Can also be found via `config.guess`. - return sysconfig.get_config_var("BUILD_GNU_TYPE") - - def build_python_path(): """The path to the build Python binary.""" binary = BUILD_DIR / "python" @@ -274,7 +269,7 @@ def configure_wasi_python(context, working_dir): # executed from within a checkout. configure = [os.path.relpath(CHECKOUT / 'configure', working_dir), f"--host={context.host_triple}", - f"--build={build_platform()}", + f"--build={BUILD_DIR.name}", f"--with-build-python={build_python}"] if build_python_is_pydebug(): configure.append("--with-pydebug") @@ -357,8 +352,8 @@ def main(): "Python)") make_host = subcommands.add_parser("make-host", help="Run `make` for the host/WASI") - clean = subcommands.add_parser("clean", help="Delete files and directories " - "created by this script") + subcommands.add_parser("clean", help="Delete files and directories " + "created by this script") for subcommand in build, configure_build, make_build, configure_host, make_host: subcommand.add_argument("--quiet", action="store_true", default=False, dest="quiet", -- 2.47.2