]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-151929: Add pythoninfo commands to Platforms/WASI (#152136)
authorVictor Stinner <vstinner@python.org>
Thu, 25 Jun 2026 17:15:45 +0000 (19:15 +0200)
committerGitHub <noreply@github.com>
Thu, 25 Jun 2026 17:15:45 +0000 (19:15 +0200)
The "build" command now also runs "pythoninfo-build" and
"pythoninfo-host" commands.

If no subcommand is provided, display the help.

GitHub Action "WASI":

* Add "pythoninfo-build" and "pythoninfo-host" commands.
* Remove unused and outdated CROSS_BUILD_PYTHON environment variable.

.github/workflows/reusable-wasi.yml
Platforms/WASI/__main__.py
Platforms/WASI/_build.py

index 48fb70cbff8009554967839db2aa22d8a5bad481..4b4888c38444092171d2b40414093640adb6dacc 100644 (file)
@@ -16,7 +16,6 @@ jobs:
     timeout-minutes: 60
     env:
       WASMTIME_VERSION: 38.0.3
-      CROSS_BUILD_PYTHON: cross-build/build
       CROSS_BUILD_WASI: cross-build/wasm32-wasip1
     steps:
     - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -54,14 +53,16 @@ jobs:
       run: python3 Platforms/WASI configure-build-python -- --config-cache --with-pydebug
     - name: "Make build Python"
       run: python3 Platforms/WASI make-build-python
-    - name: "Configure host"
+    - name: "Display build info of the build Python"
+      run: python3 Platforms/WASI pythoninfo-build
+    - name: "Configure host/WASI Python"
       # `--with-pydebug` inferred from configure-build-python
       run: python3 Platforms/WASI configure-host -- --config-cache
       env:
         WASI_SDK_PATH: ${{ steps.install-wasi-sdk.outputs.wasi-sdk-path }}
-    - name: "Make host"
+    - name: "Make host/WASI Python"
       run: python3 Platforms/WASI make-host
-    - name: "Display build info"
-      run: make --directory "${CROSS_BUILD_WASI}" pythoninfo
+    - name: "Display build info of the host/WASI Python"
+      run: python3 Platforms/WASI pythoninfo-host
     - name: "Test"
       run: make --directory "${CROSS_BUILD_WASI}" test
index b8513a004f18e5f767f24653766f5da876e2f2b4..880058bad660be9b5ebb1057ccc5e8a6963db4f4 100644 (file)
@@ -40,6 +40,9 @@ def main():
     build_python = subcommands.add_parser(
         "build-python", help="Build the build Python"
     )
+    pythoninfo_build = subcommands.add_parser(
+        "pythoninfo-build", help="Display build info of the build Python"
+    )
     configure_host = subcommands.add_parser(
         "configure-host",
         help="Run `configure` for the "
@@ -53,6 +56,9 @@ def main():
     build_host = subcommands.add_parser(
         "build-host", help="Build the host/WASI Python"
     )
+    pythoninfo_host = subcommands.add_parser(
+        "pythoninfo-host", help="Display build info of the host/WASI Python"
+    )
     subcommands.add_parser(
         "clean", help="Delete files and directories created by this script"
     )
@@ -61,8 +67,10 @@ def main():
         configure_build,
         make_build,
         build_python,
+        pythoninfo_build,
         configure_host,
         make_host,
+        pythoninfo_host,
         build_host,
     ):
         subcommand.add_argument(
@@ -118,7 +126,13 @@ def main():
             help="Command template for running the WASI host; defaults to "
             f"`{default_host_runner}`",
         )
-    for subcommand in build, configure_host, make_host, build_host:
+    for subcommand in (
+        build,
+        configure_host,
+        make_host,
+        build_host,
+        pythoninfo_host,
+    ):
         subcommand.add_argument(
             "--host-triple",
             action="store",
@@ -137,6 +151,8 @@ def main():
         case "build-python":
             _build.configure_build_python(context)
             _build.make_build_python(context)
+        case "pythoninfo-build":
+            _build.pythoninfo_build_python(context)
         case "configure-host":
             _build.configure_wasi_python(context)
         case "make-host":
@@ -144,13 +160,22 @@ def main():
         case "build-host":
             _build.configure_wasi_python(context)
             _build.make_wasi_python(context)
+        case "pythoninfo-host":
+            _build.pythoninfo_wasi_python(context)
         case "build":
+            # Configure and build the build Python
             _build.configure_build_python(context)
             _build.make_build_python(context)
+            _build.pythoninfo_build_python(context)
+
+            # Configure and build the host/WASI Python
             _build.configure_wasi_python(context)
             _build.make_wasi_python(context)
+            _build.pythoninfo_wasi_python(context)
         case "clean":
             _build.clean_contents(context)
+        case None:
+            parser.print_help()
         case _:
             raise ValueError(f"Unknown subcommand {context.subcommand!r}")
 
index c1a91a9c833b8e84433ec26b14bd8195c6ddb0bf..792f8edd99431380ddf6b2ad54540fcbf044e679 100644 (file)
@@ -418,3 +418,15 @@ def clean_contents(context):
     if LOCAL_SETUP.exists():
         if LOCAL_SETUP.read_bytes() == LOCAL_SETUP_MARKER:
             log("🧹", f"Deleting generated {LOCAL_SETUP} ...")
+
+
+@subdir(BUILD_DIR)
+def pythoninfo_build_python(context, working_dir):
+    """Display build info of the build Python."""
+    call(["make", "pythoninfo"], context=context)
+
+
+@subdir(lambda context: CROSS_BUILD_DIR / host_triple(context))
+def pythoninfo_wasi_python(context, working_dir):
+    """Display build info of the host/WASI Python."""
+    call(["make", "pythoninfo"], context=context)