mirror of https://github.com/python/cpython
45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
|
|
set -e -x
|
|
|
|
# Quick check to avoid running configure just to fail in the end.
|
|
if [ -f Programs/python.o ]; then
|
|
echo "Can't do an out-of-tree build w/ an in-place build pre-existing (i.e., found Programs/python.o)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f Modules/Setup.local ]; then
|
|
touch Modules/Setup.local
|
|
fi
|
|
|
|
# TODO: check if `make` and `pkgconfig` are installed
|
|
# TODO: detect if wasmtime is installed
|
|
|
|
# Create the "build" Python.
|
|
mkdir -p builddir/build
|
|
pushd builddir/build
|
|
../../configure -C
|
|
make -s -j 4 all
|
|
export PYTHON_VERSION=`./python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")'`
|
|
popd
|
|
|
|
# Create the "host"/WASI Python.
|
|
export CONFIG_SITE="$(pwd)/Tools/wasm/config.site-wasm32-wasi"
|
|
export HOSTRUNNER="wasmtime run --mapdir /::$(pwd) --env PYTHONPATH=/builddir/wasi/build/lib.wasi-wasm32-$PYTHON_VERSION $(pwd)/builddir/wasi/python.wasm --"
|
|
|
|
mkdir -p builddir/wasi
|
|
pushd builddir/wasi
|
|
../../Tools/wasm/wasi-env \
|
|
../../configure \
|
|
-C \
|
|
--host=wasm32-unknown-wasi \
|
|
--build=$(../../config.guess) \
|
|
--with-build-python=../build/python
|
|
make -s -j 4 all
|
|
# Create a helper script for executing the host/WASI Python.
|
|
printf "#!/bin/sh\nexec $HOSTRUNNER \"\$@\"\n" > run_wasi.sh
|
|
chmod 755 run_wasi.sh
|
|
./run_wasi.sh --version
|
|
popd
|
|
|