WIP: Multiregressor example #674
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build modules | |
| on: [push, pull_request] | |
| jobs: | |
| build-linux: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install OS dependencies | |
| run: sudo add-apt-repository universe | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: micropython/micropython | |
| path: micropython | |
| ref: v1.27.0 | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython X86 | |
| working-directory: micropython | |
| run: | | |
| source tools/ci.sh && ci_unix_32bit_setup && ci_unix_standard_build | |
| mv ./ports/unix/build-standard/ ./ports/unix/build-nomodules/ | |
| - name: Build custom firmware with user modules, and tests. Unix/x64 | |
| run: | | |
| make check_unix V=1 | |
| mkdir -p ./dist/ports/linux | |
| mv ./dist/ports/unix/micropython ./dist/ports/linux/micropython | |
| - name: Build .mpy modules and run tests Unix/x64 | |
| run: make check ARCH=x64 V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-linux | |
| path: dist | |
| build-arm: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install OS dependencies | |
| run: sudo add-apt-repository universe | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: micropython/micropython | |
| path: micropython | |
| ref: v1.27.0 | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython ARM | |
| working-directory: micropython | |
| run: | | |
| source tools/ci.sh && ci_rp2_setup | |
| make -C mpy-cross | |
| - name: Setup MicroPython RP2 port | |
| working-directory: micropython/ports/rp2 | |
| run: | | |
| make submodules | |
| make clean | |
| - name: Build custom firmware with extmod, RP2 | |
| run: make rp2 PORT=rp2 V=1 | |
| - name: Build module armv6m | |
| run: make dist ARCH=armv6m V=1 | |
| - name: Build module armv7m | |
| run: make dist ARCH=armv7m V=1 | |
| - name: Build module armv7emsp | |
| run: make dist ARCH=armv7emsp V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-arm | |
| path: dist | |
| build-esp32: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install OS dependencies | |
| run: sudo add-apt-repository universe | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: micropython/micropython | |
| path: micropython | |
| ref: v1.27.0 | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython ESP32 | |
| working-directory: micropython | |
| run: | | |
| source tools/ci.sh && ci_esp32_idf_setup | |
| make -C mpy-cross | |
| - name: Setup submodules esp32 | |
| working-directory: micropython/ports/esp32 | |
| run: source ../../esp-idf/export.sh && make submodules | |
| - name: Build custom firmware with extmod, ESP32 | |
| run: | | |
| source micropython/esp-idf/export.sh && pip install -r requirements.txt | |
| make extmod PORT=esp32 BOARD=ESP32_GENERIC_S3 | |
| make extmod PORT=esp32 BOARD=ESP32_GENERIC | |
| - name: Build module xtensawin | |
| run: source micropython/esp-idf/export.sh && pip install -r requirements.txt && make dist ARCH=xtensawin V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-esp32 | |
| path: dist | |
| build-riscv: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install OS dependencies | |
| run: sudo add-apt-repository universe | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: micropython/micropython | |
| path: micropython | |
| ref: v1.27.0 | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython ESP32 | |
| working-directory: micropython | |
| run: | | |
| source tools/ci.sh && ci_esp32_idf_setup && ci_gcc_riscv_setup | |
| make -C mpy-cross | |
| - name: Setup submodules esp32 | |
| working-directory: micropython/ports/esp32 | |
| run: source ../../esp-idf/export.sh && make submodules | |
| - name: Build custom firmware with extmod, ESP32 | |
| run: | | |
| source micropython/esp-idf/export.sh && pip install -r requirements.txt | |
| echo make extmod PORT=esp32 BOARD=ESP32_GENERIC_C6 | |
| - name: Build nadmod xtensawin | |
| run: source micropython/esp-idf/export.sh && pip install -r requirements.txt && make dist ARCH=rv32imc V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-riscv | |
| path: dist | |
| build-macos: | |
| runs-on: macos-latest | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Configure XCode SDK version | |
| run: sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer | |
| - name: Install OS dependencies | |
| run: brew install pkg-config | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: micropython/micropython | |
| path: micropython | |
| ref: v1.27.0 | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython X86 | |
| working-directory: micropython | |
| run: | | |
| make -C mpy-cross CFLAGS_EXTRA=-Wno-error | |
| make -C ports/unix submodules | |
| - name: Build custom firmware with user modules, and tests. Unix/x64 | |
| run: | | |
| make check_unix V=1 CFLAGS_EXTRA=-Wno-error | |
| mkdir -p ./dist/ports/macos | |
| mv ./dist/ports/unix/micropython ./dist/ports/macos/micropython | |
| - name: Build .mpy modules and run tests Unix/x64 | |
| # natmod build with linking seems broken on Mac OS, exception in mpy_ld.py, ELFError, magic number does not match | |
| # https://github.com/micropython/micropython/issues/5500 | |
| run: echo SKIP make check ARCH=x64 V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-macos | |
| path: dist | |
| build-webassembly: | |
| runs-on: ubuntu-latest | |
| env: | |
| MPY_DIR: ./micropython | |
| MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install OS dependencies | |
| run: sudo add-apt-repository universe | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: jonnor/micropython | |
| path: micropython | |
| ref: webassembly-extra-cflags | |
| - name: Install Python dependencies | |
| run: pip install -r requirements.txt | |
| - name: Setup MicroPython | |
| working-directory: micropython | |
| run: | | |
| npm install terser | |
| git clone https://github.com/emscripten-core/emsdk.git | |
| (cd emsdk && ./emsdk install 4.0.21 && ./emsdk activate 4.0.21) | |
| make -C mpy-cross CFLAGS_EXTRA=-Wno-error | |
| - name: Build Webassembly | |
| run: | | |
| source ${MPY_DIR}/emsdk/emsdk_env.sh | |
| make -C ${MPY_DIR}/ports/webassembly submodules | |
| make webassembly V=1 | |
| - name: Archive dist artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: emlearn-micropython-build-webassembly | |
| path: dist | |
| deploy-pages: | |
| permissions: | |
| contents: write | |
| needs: [build-linux, build-arm, build-esp32, build-macos, build-riscv, build-webassembly] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts/ | |
| - name: Prepare files for distribution | |
| run: | | |
| mkdir -p dist/ | |
| cp -r artifacts/*/* dist/ | |
| - name: Deploy to Github Pages (tag/version) | |
| if: "github.ref_type == 'tag'" | |
| uses: peaceiris/actions-gh-pages@v3 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./dist | |
| keep_files: true | |
| destination_dir: builds/${{ github.ref_name }} | |
| - name: Deploy to Github Pages (latest) | |
| if: "github.ref_type == 'tag'" | |
| uses: peaceiris/actions-gh-pages@v3 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./dist | |
| keep_files: true | |
| destination_dir: builds/latest | |
| docs: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.10'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install OS dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -yqq libsndfile1 libsndfile1-dev doxygen | |
| - name: Install Python dependencies | |
| run: | | |
| python -m pip install -U 'pip<20' | |
| pip install flake8 pytest | |
| if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
| if [ -f requirements.dev.txt ]; then pip install -r requirements.dev.txt; fi | |
| - name: Build documentation using Sphinx | |
| working-directory: ./docs | |
| env: | |
| PYTHONPATH: ../:../build/lib.linux-x86_64-cpython-310 | |
| READTHEDOCS: 'True' | |
| run: | | |
| make html |