name: Pyodide Build

on:
  schedule:
    - cron: '0 0 */2 * *'

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@v5

    - 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 - <src/api/python/z3test.py z3

    - name: Package wheel
      uses: actions/upload-artifact@master
      with:
          name: pyodide-wheel
          path: src/api/python/dist/*.whl
          retention-days: 1         

