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
11 changes: 6 additions & 5 deletions .github/workflows/reusable-wasi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ jobs:
WASMTIME_VERSION: 38.0.3
WASI_SDK_VERSION: 24
WASI_SDK_PATH: /opt/wasi-sdk
CROSS_BUILD_PYTHON: cross-build/build
CROSS_BUILD_WASI: cross-build/wasm32-wasip1
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down Expand Up @@ -51,12 +50,14 @@ jobs:
run: python3 Tools/wasm/wasi configure-build-python -- --config-cache --with-pydebug
- name: "Make build Python"
run: python3 Tools/wasm/wasi make-build-python
- name: "Configure host"
- name: "Display build info of the build Python"
run: python3 Tools/wasm/wasi pythoninfo-build
- name: "Configure host/WASI Python"
# `--with-pydebug` inferred from configure-build-python
run: python3 Tools/wasm/wasi configure-host -- --config-cache
- name: "Make host"
- name: "Make host/WASI Python"
run: python3 Tools/wasm/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 Tools/wasm/wasi pythoninfo-host
- name: "Test"
run: make --directory "${CROSS_BUILD_WASI}" test
43 changes: 40 additions & 3 deletions Tools/wasm/wasi/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,12 @@ def make_build_python(context, working_dir):
log("🎉", f"{binary} {version}")


@subdir(BUILD_DIR)
def pythoninfo_build_python(context, working_dir):
"""Display build info of the build Python."""
call(["make", "pythoninfo"], context=context)


def find_wasi_sdk():
"""Find the path to the WASI SDK."""
wasi_sdk_path = None
Expand Down Expand Up @@ -390,6 +396,12 @@ def make_wasi_python(context, working_dir):
)


@subdir(lambda context: CROSS_BUILD_DIR / context.host_triple)
def pythoninfo_wasi_python(context, working_dir):
"""Display build info of the host/WASI Python."""
call(["make", "pythoninfo"], context=context)


def clean_contents(context):
"""Delete all files created by this script."""
if CROSS_BUILD_DIR.exists():
Expand Down Expand Up @@ -443,6 +455,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 "
Expand All @@ -456,6 +471,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"
)
Expand All @@ -464,8 +482,10 @@ def main():
configure_build,
make_build,
build_python,
pythoninfo_build,
configure_host,
make_host,
pythoninfo_host,
build_host,
):
subcommand.add_argument(
Expand Down Expand Up @@ -520,7 +540,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",
Expand All @@ -532,18 +558,29 @@ def main():
context = parser.parse_args()
context.init_dir = pathlib.Path().absolute()

build_build_python = build_steps(configure_build_python, make_build_python)
build_wasi_python = build_steps(configure_wasi_python, make_wasi_python)
build_build_python = build_steps(
configure_build_python,
make_build_python,
pythoninfo_build_python,
)
build_wasi_python = build_steps(
configure_wasi_python,
make_wasi_python,
pythoninfo_wasi_python,
)

dispatch = {
"configure-build-python": configure_build_python,
"make-build-python": make_build_python,
"build-python": build_build_python,
"pythoninfo-build": pythoninfo_build_python,
"configure-host": configure_wasi_python,
"make-host": make_wasi_python,
"build-host": build_wasi_python,
"pythoninfo-host": pythoninfo_wasi_python,
"build": build_steps(build_build_python, build_wasi_python),
"clean": clean_contents,
None: lambda args: parser.print_help(),
}
dispatch[context.subcommand](context)

Expand Down
Loading