You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Developing for WASI requires two things to be installed:
305
+
Developing for WASI requires two additional tools to be installed beyond the typical tools required to build CPython:
306
306
307
307
1. The [WASI SDK](https://github.com/WebAssembly/wasi-sdk) 16.0+
308
-
(see `.devcontainer/Dockerfile` for an example of how to download and install the WASI SDK)
309
308
2. A WASI host/runtime ([wasmtime](https://wasmtime.dev) 14+ is recommended and what the instructions below assume)
310
309
310
+
All of this is provided in the [devcontainer](https://devguide.python.org/getting-started/setup-building/#contribute-using-github-codespaces) if you don't want to install these tools locally.
311
311
312
312
### Building
313
313
314
314
Building for WASI requires doing a cross-build where you have a "build" Python to help produce a WASI build of CPython (technically it's a "host x host" cross-build because the build Python is also the target Python while the host build is the WASI build; yes, it's confusing terminology). In the end you should have a build Python in `cross-build/build` and a WASI build in `cross-build/wasm32-wasi`.
315
315
316
-
The easiest way to do a build is to use the `wasi.py` script. You can either have it perform the entire build process from start to finish in one step, or you can do it in discrete steps that mirror running `configure` and `make` for each of the two builds of Python you end up producing (which are beneficial when you only need to do a specific step after getting a complete build, e.g. editing some code and you just need to run `make` for the WASI build).
316
+
The easiest way to do a build is to use the `wasi.py` script. You can either have it perform the entire build process from start to finish in one step, or you can do it in discrete steps that mirror running `configure` and `make` for each of the two builds of Python you end up producing (which are beneficial when you only need to do a specific step after getting a complete build, e.g. editing some code and you just need to run `make` for the WASI build). The script is designed to self-document what actions it is performing on your behalf, both as a way to check its work but also for educaitonal purposes.
317
317
318
-
The discrete steps are:
318
+
The discrete steps for building via `wasi.py`are:
319
319
```shell
320
320
python Tools/wasm/wasi.py configure-build-python
321
321
python Tools/wasm/wasi.py make-build-python
322
322
python Tools/wasm/wasi.py configure-host
323
323
python Tools/wasm/wasi.py make-host
324
324
```
325
325
326
-
To do it in a single command, run:
326
+
To do it all in a single command, run:
327
327
```shell
328
328
python Tools/wasm/wasi.py build
329
329
```
@@ -335,12 +335,12 @@ That will:
335
335
3. Run `configure` for the WASI build (`wasi.py configure-host`)
336
336
4. Run `make` for the WASI build (`wasi.py make-host`)
337
337
338
-
See the `--help` for the various options available for each of the subcommands which controls things like the location of the WASI SDK, the command to use with the WASI host/runtime, etc. Also note that you can use `--` as a separtor for any of the `configure`-related commands -- including `build` -- to pass arguments to `configure`itself. For example, if you want a pydebug build that also caches the results from `configure`, you can do:
338
+
See the `--help` for the various options available for each of the subcommands which controls things like the location of the WASI SDK, the command to use with the WASI host/runtime, etc. Also note that you can use `--` as a separator for any of the `configure`-related commands -- including `build`itself -- to pass arguments to the underlying `configure`call. For example, if you want a pydebug build that also caches the results from `configure`, you can do:
The `wasi.py` script is able to infer details from the build Python, and so you only technically need to specify `--with-pydebug` once for`configure-build-python`and `configure-host`will detect its use if you use the discrete steps:
343
+
The `wasi.py` script is able to infer details from the build Python, and so you only technically need to specify `--with-pydebug` once via`configure-build-python`as this will lead to `configure-host`detecting its use if you use the discrete steps:
While you _can_ run `python.wasm` directly, Python will fail to start up without certain things being set (e.g. `PYTHONPATH` for `sysconfig` data). As such, the `python.sh` file records these details for you.
0 commit comments