Skip to content

Build it! #2

Description

@jcbhmr

https://github.com/emception/emception/blob/e50b5f008a9fa30ed0bb8462a4c8ad8948de6b40/build-cpython.sh

#!/bin/bash
SRC=$(dirname $0)
BUILD="$1"
CPYTHON_SRC="$2"if [ "$CPYTHON_SRC"=="" ];then
CPYTHON_SRC=$(pwd)/upstream/cpython
fiif [ "$BUILD"=="" ];then
BUILD=$(pwd)/build
fi
SRC=$(realpath "$SRC")
BUILD=$(realpath "$BUILD")
CPYTHON_BUILD=$BUILD/cpython
CPYTHON_NATIVE=$BUILD/cpython-native
# If we don't have a copy of cpython, make oneif [ !-d$CPYTHON_SRC/ ];then
git clone --depth 1 https://github.com/python/cpython.git "$CPYTHON_SRC/"pushd$CPYTHON_SRC/
# This is the last tested commit of cpython.# Feel free to try with a newer version
COMMIT=b8a9f13abb61bd91a368e2d3f339de736863050f
git fetch origin $COMMIT
git reset --hard $COMMITpopdfiif [ !-d$CPYTHON_NATIVE/ ];then# Rever the cpython patch in case this runs after the wasm version reconfigures it.pushd$CPYTHON_SRC/
git apply -R $SRC/patches/cpython.patch
autoreconf -i
popd
mkdir -p $CPYTHON_NATIVE/
pushd$CPYTHON_NATIVE/
$CPYTHON_SRC/configure -C
make -j$(nproc)popdfiif [ !-d$CPYTHON_BUILD/ ];then# Patch cpython to add a module to evaluate JS code.pushd$CPYTHON_SRC/
git apply $SRC/patches/cpython.patch
autoreconf -i
popd
mkdir -p $CPYTHON_BUILD/
pushd$CPYTHON_BUILD/
# Build cpython with asyncify support.# Disable sqlite3, zlib and bzip2, which cpython enables by default
CONFIG_SITE=$CPYTHON_SRC/Tools/wasm/config.site-wasm32-emscripten \
LIBSQLITE3_CFLAGS="" \
BZIP2_CFLAGS="" \
LDFLAGS="\ -s ALLOW_MEMORY_GROWTH=1 \ -s EXPORTED_FUNCTIONS=_main,_free,_malloc \ -s EXPORTED_RUNTIME_METHODS=FS,PROXYFS,ERRNO_CODES,allocateUTF8 \ -lproxyfs.js \ --js-library=$SRC/emlib/fsroot.js \" emconfigure $CPYTHON_SRC/configure -C \
--host=wasm32-unknown-emscripten \
--build=$($CPYTHON_SRC/config.guess) \
--with-emscripten-target=browser \
--disable-wasm-dynamic-linking \
--with-suffix=".mjs" \
--disable-wasm-preload \
--enable-wasm-js-module \
--with-build-python=$CPYTHON_NATIVE/python \
emmake make -j$(nproc)popdfipushd$CPYTHON_BUILD/
emmake make -j$(nproc)popd

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions