name: Pyodide Build on: push: branches: [ master ] env: BUILD_TYPE: Release permissions: contents: read jobs: build: runs-on: ubuntu-24.04 strategy: fail-fast: false steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup packages run: sudo apt-get update && sudo apt-get install -y python3-dev python3-pip python3-venv - name: Create venv run: python3 -m venv ~/env - name: Install pyodide run: ~/env/bin/pip install pyodide-build pyodide-cli - name: Configure CMake and build run: | git clone https://github.com/emscripten-core/emsdk.git ~/emsdk cd ~/emsdk && PYODIDE_EMSCRIPTEN_VERSION=$(~/env/bin/pyodide config get emscripten_version) ./emsdk install ${PYODIDE_EMSCRIPTEN_VERSION} ./emsdk activate ${PYODIDE_EMSCRIPTEN_VERSION} - name: Build Z3 run: | source ~/emsdk/emsdk_env.sh cd src/api/python CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CXXFLAG="${CXXFLAGS}" ~/env/bin/pyodide build --exports whole_archive env: CFLAGS: "-fexceptions -s DISABLE_EXCEPTION_CATCHING=0 -g2" LDFLAGS: "-fexceptions -s WASM_BIGINT" CXXFLAGS: "-fexceptions -s DISABLE_EXCEPTION_CATCHING=0" - name: Setup env-pyodide run: | source ~/env/bin/activate source ~/emsdk/emsdk_env.sh pyodide venv ~/env-pyodide - name: Setup z3 wheel run: | ~/env-pyodide/bin/pip install src/api/python/dist/*.whl ~/env-pyodide/bin/python -