mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
Introduce build-python and build-host subcommands for Tools/wasm/wasi (GH-142266)
It should make it easier when you need to rebuild just the e.g. host Python, but it requires ./configure to run. Co-authored-by: Emma Smith <emma@emmatyping.dev>
This commit is contained in:
parent
dcac498e50
commit
58e1c7a16f
1 changed files with 39 additions and 17 deletions
|
|
@ -386,18 +386,6 @@ def make_wasi_python(context, working_dir):
|
|||
)
|
||||
|
||||
|
||||
def build_all(context):
|
||||
"""Build everything."""
|
||||
steps = [
|
||||
configure_build_python,
|
||||
make_build_python,
|
||||
configure_wasi_python,
|
||||
make_wasi_python,
|
||||
]
|
||||
for step in steps:
|
||||
step(context)
|
||||
|
||||
|
||||
def clean_contents(context):
|
||||
"""Delete all files created by this script."""
|
||||
if CROSS_BUILD_DIR.exists():
|
||||
|
|
@ -409,6 +397,16 @@ def clean_contents(context):
|
|||
log("🧹", f"Deleting generated {LOCAL_SETUP} ...")
|
||||
|
||||
|
||||
def build_steps(*steps):
|
||||
"""Construct a command from other steps."""
|
||||
|
||||
def builder(context):
|
||||
for step in steps:
|
||||
step(context)
|
||||
|
||||
return builder
|
||||
|
||||
|
||||
def main():
|
||||
default_host_triple = "wasm32-wasip1"
|
||||
default_wasi_sdk = find_wasi_sdk()
|
||||
|
|
@ -438,6 +436,9 @@ def main():
|
|||
make_build = subcommands.add_parser(
|
||||
"make-build-python", help="Run `make` for the build Python"
|
||||
)
|
||||
build_python = subcommands.add_parser(
|
||||
"build-python", help="Build the build Python"
|
||||
)
|
||||
configure_host = subcommands.add_parser(
|
||||
"configure-host",
|
||||
help="Run `configure` for the "
|
||||
|
|
@ -448,6 +449,9 @@ def main():
|
|||
make_host = subcommands.add_parser(
|
||||
"make-host", help="Run `make` for the host/WASI"
|
||||
)
|
||||
build_host = subcommands.add_parser(
|
||||
"build-host", help="Build the host/WASI Python"
|
||||
)
|
||||
subcommands.add_parser(
|
||||
"clean", help="Delete files and directories created by this script"
|
||||
)
|
||||
|
|
@ -455,8 +459,10 @@ def main():
|
|||
build,
|
||||
configure_build,
|
||||
make_build,
|
||||
build_python,
|
||||
configure_host,
|
||||
make_host,
|
||||
build_host,
|
||||
):
|
||||
subcommand.add_argument(
|
||||
"--quiet",
|
||||
|
|
@ -471,7 +477,12 @@ def main():
|
|||
default=default_logdir,
|
||||
help=f"Directory to store log files; defaults to {default_logdir}",
|
||||
)
|
||||
for subcommand in configure_build, configure_host:
|
||||
for subcommand in (
|
||||
configure_build,
|
||||
configure_host,
|
||||
build_python,
|
||||
build_host,
|
||||
):
|
||||
subcommand.add_argument(
|
||||
"--clean",
|
||||
action="store_true",
|
||||
|
|
@ -479,11 +490,17 @@ def main():
|
|||
dest="clean",
|
||||
help="Delete any relevant directories before building",
|
||||
)
|
||||
for subcommand in build, configure_build, configure_host:
|
||||
for subcommand in (
|
||||
build,
|
||||
configure_build,
|
||||
configure_host,
|
||||
build_python,
|
||||
build_host,
|
||||
):
|
||||
subcommand.add_argument(
|
||||
"args", nargs="*", help="Extra arguments to pass to `configure`"
|
||||
)
|
||||
for subcommand in build, configure_host:
|
||||
for subcommand in build, configure_host, build_host:
|
||||
subcommand.add_argument(
|
||||
"--wasi-sdk",
|
||||
type=pathlib.Path,
|
||||
|
|
@ -499,7 +516,7 @@ def main():
|
|||
help="Command template for running the WASI host; defaults to "
|
||||
f"`{default_host_runner}`",
|
||||
)
|
||||
for subcommand in build, configure_host, make_host:
|
||||
for subcommand in build, configure_host, make_host, build_host:
|
||||
subcommand.add_argument(
|
||||
"--host-triple",
|
||||
action="store",
|
||||
|
|
@ -511,12 +528,17 @@ 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)
|
||||
|
||||
dispatch = {
|
||||
"configure-build-python": configure_build_python,
|
||||
"make-build-python": make_build_python,
|
||||
"build-python": build_build_python,
|
||||
"configure-host": configure_wasi_python,
|
||||
"make-host": make_wasi_python,
|
||||
"build": build_all,
|
||||
"build-host": build_wasi_python,
|
||||
"build": build_steps(build_build_python, build_wasi_python),
|
||||
"clean": clean_contents,
|
||||
}
|
||||
dispatch[context.subcommand](context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue