Skip to content

Commit e12ee02

Browse files
authored
Add a wasi package command (#154510)
1 parent 4bbc20b commit e12ee02

5 files changed

Lines changed: 718 additions & 200 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ Tools/unicode/data/
143143
/config.status.lineno
144144
/.ccache
145145
/cross-build*/
146+
/dist/
146147
/jit_stencils*.h
147148
/jit_unwind_info*.h
148149
.jit-stamp

Platforms/WASI/__main__.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
#!/usr/bin/env python3
2-
3-
__lazy_modules__ = ["_build"]
1+
__lazy_modules__ = [
2+
"argparse",
3+
"os",
4+
"pathlib",
5+
"_build",
6+
"_package",
7+
"_shared",
8+
]
49

510
import argparse
611
import os
712
import pathlib
813

914
import _build
10-
11-
HERE = pathlib.Path(__file__).parent
15+
import _package
16+
import _shared
1217

1318

1419
def main():
@@ -27,6 +32,7 @@ def main():
2732
# may want to use them.
2833
"--config {WASMTIME_CONFIG_PATH}"
2934
)
35+
context = _shared.Context()
3036

3137
parser = argparse.ArgumentParser()
3238
subcommands = parser.add_subparsers(dest="subcommand")
@@ -59,6 +65,9 @@ def main():
5965
pythoninfo_host = subcommands.add_parser(
6066
"pythoninfo-host", help="Display build info of the host/WASI Python"
6167
)
68+
package = subcommands.add_parser(
69+
"package", help="Package the host/WASI Python into an archive"
70+
)
6271
subcommands.add_parser(
6372
"clean", help="Delete files and directories created by this script"
6473
)
@@ -84,6 +93,8 @@ def main():
8493
"--logdir",
8594
type=pathlib.Path,
8695
default=None,
96+
dest="_log_path",
97+
metavar="LOG-DIR",
8798
help="Directory to store log files",
8899
)
89100
for subcommand in (
@@ -113,8 +124,9 @@ def main():
113124
subcommand.add_argument(
114125
"--wasi-sdk",
115126
type=pathlib.Path,
116-
dest="wasi_sdk_path",
127+
dest="_wasi_sdk_path",
117128
default=None,
129+
metavar="WASI-SDK-PATH",
118130
help="Path to the WASI SDK; defaults to WASI_SDK_PATH environment variable "
119131
"or the appropriate version found in /opt",
120132
)
@@ -132,16 +144,19 @@ def main():
132144
make_host,
133145
build_host,
134146
pythoninfo_host,
147+
package,
135148
):
136149
subcommand.add_argument(
137150
"--host-triple",
138151
action="store",
139152
default=None,
153+
dest="_host_triple",
154+
metavar="WASI-TRIPLE",
140155
help="The target triple for the WASI host build; "
141-
f"defaults to the value found in {os.fsdecode(HERE / 'config.toml')}",
156+
f"defaults to the value found in {os.fsdecode(context.here / 'config.toml')}",
142157
)
143158

144-
context = parser.parse_args()
159+
parser.parse_args(namespace=context)
145160

146161
match context.subcommand:
147162
case "configure-build-python":
@@ -166,14 +181,19 @@ def main():
166181
# Configure and build the build Python
167182
_build.configure_build_python(context)
168183
_build.make_build_python(context)
169-
_build.pythoninfo_build_python(context)
184+
if not context.quiet:
185+
_build.pythoninfo_build_python(context)
170186

171187
# Configure and build the host/WASI Python
172188
_build.configure_wasi_python(context)
173189
_build.make_wasi_python(context)
174-
_build.pythoninfo_wasi_python(context)
190+
if not context.quiet:
191+
_build.pythoninfo_wasi_python(context)
175192
case "clean":
176193
_build.clean_contents(context)
194+
case "package":
195+
_package.gather(context)
196+
_package.archive(context)
177197
case None:
178198
parser.print_help()
179199
case _:

0 commit comments

Comments
 (0)