Skip to content

Commit 8ba1c7f

Browse files
tiranbrettcannon
andauthored
gh-84461: Document how to install SDKs manually (GH-93844)
Co-authored-by: Brett Cannon <brett@python.org>
1 parent 50e0866 commit 8ba1c7f

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

Tools/wasm/README.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,3 +338,81 @@ Feature detection flags:
338338
* ``__wasm_bulk_memory__``
339339
* ``__wasm_atomics__``
340340
* ``__wasm_mutable_globals__``
341+
342+
## Install SDKs and dependencies manually
343+
344+
In some cases (e.g. build bots) you may prefer to install build dependencies
345+
directly on the system instead of using the container image. Total disk size
346+
of SDKs and cached libraries is about 1.6 GB.
347+
348+
### Install OS dependencies
349+
350+
```shell
351+
# Debian/Ubuntu
352+
apt update
353+
apt install -y git make xz-utils bzip2 curl python3-minimal ccache
354+
```
355+
356+
```shell
357+
# Fedora
358+
dnf install -y git make xz bzip2 which ccache
359+
```
360+
361+
### Install [Emscripten SDK](https://emscripten.org/docs/getting_started/downloads.html)
362+
363+
**NOTE**: Follow the on-screen instructions how to add the SDK to ``PATH``.
364+
365+
```shell
366+
git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk
367+
/opt/emsdk/emsdk install latest
368+
/opt/emsdk/emsdk activate latest
369+
```
370+
371+
### Optionally: pre-build and cache static libraries
372+
373+
Emscripten SDK provides static builds of core libraries without PIC
374+
(position-independent code). Python builds with ``dlopen`` support require
375+
PIC. To populate the build cache, run:
376+
377+
```shell
378+
. /opt/emsdk/emsdk_env.sh
379+
embuilder build --force zlib bzip2
380+
embuilder build --force --pic \
381+
zlib bzip2 libc-mt libdlmalloc-mt libsockets-mt \
382+
libstubs libcompiler_rt libcompiler_rt-mt crtbegin libhtml5 \
383+
libc++-mt-noexcept libc++abi-mt-noexcept \
384+
libal libGL-mt libstubs-debug libc-mt-debug
385+
```
386+
387+
### Install [WASI-SDK](https://github.com/WebAssembly/wasi-sdk)
388+
389+
**NOTE**: WASI-SDK's clang may show a warning on Fedora:
390+
``/lib64/libtinfo.so.6: no version information available``,
391+
[RHBZ#1875587](https://bugzilla.redhat.com/show_bug.cgi?id=1875587).
392+
393+
```shell
394+
export WASI_VERSION=16
395+
export WASI_VERSION_FULL=${WASI_VERSION}.0
396+
curl -sSf -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz
397+
mkdir -p /opt/wasi-sdk
398+
tar --strip-components=1 -C /opt/wasi-sdk -xvf wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz
399+
rm -f wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz
400+
```
401+
402+
### Install [wasmtime](https://github.com/bytecodealliance/wasmtime) WASI runtime
403+
404+
**NOTE**: wasmtime 0.37 has a bug. Newer versions should be fine again.
405+
406+
```shell
407+
curl -sSf -L -o ~/install-wasmtime.sh https://wasmtime.dev/install.sh
408+
chmod +x ~/install-wasmtime.sh
409+
~/install-wasmtime.sh --version v0.36.0
410+
ln -srf -t /usr/local/bin/ ~/.wasmtime/bin/wasmtime
411+
```
412+
413+
### Install [WASIX](https://github.com/singlestore-labs/wasix)
414+
415+
```shell
416+
git clone https://github.com/singlestore-labs/wasix.git ~/wasix
417+
make install -C ~/wasix
418+
```

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy