Skip to content

Merge pull request #64 from nkrusch/joss-paper #666

Merge pull request #64 from nkrusch/joss-paper

Merge pull request #64 from nkrusch/joss-paper #666

Workflow file for this run

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: jonnor/micropython
path: micropython
ref: v1.26.1-emlearn
- 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: jonnor/micropython
path: micropython
ref: v1.26.1-emlearn
- 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: jonnor/micropython
path: micropython
ref: v1.26.1-emlearn
- 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: jonnor/micropython
path: micropython
ref: v1.26.1-emlearn
- 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: jonnor/micropython
path: micropython
ref: v1.26.1-emlearn
- 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
deploy-pages:
permissions:
contents: write
needs: [build-linux, build-arm, build-esp32, build-macos, build-riscv]
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
if: "github.ref_name == 'master' || 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 }}
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