name: Build LVGL MicroPython on Linux on: push: branches: - main pull_request: branches: - main workflow_dispatch: # allow manual workflow starts jobs: build: runs-on: ubuntu-latest # Ubuntu is Debian-based and commonly used in GitHub Actions steps: - name: Checkout repository with submodules uses: actions/checkout@v4 with: submodules: recursive - name: Install lvgl_micropython dependencies run: | sudo apt-get update sudo apt-get install -y \ build-essential \ libffi-dev \ pkg-config \ cmake \ ninja-build \ gnome-desktop-testing \ libasound2-dev \ libpulse-dev \ libaudio-dev \ libjack-dev \ libsndio-dev \ libx11-dev \ libxext-dev \ libxrandr-dev \ libxcursor-dev \ libxfixes-dev \ libxi-dev \ libxss-dev \ libxkbcommon-dev \ libdrm-dev \ libgbm-dev \ libgl1-mesa-dev \ libgles2-mesa-dev \ libegl1-mesa-dev \ libdbus-1-dev \ libibus-1.0-dev \ libudev-dev \ fcitx-libs-dev \ libpipewire-0.3-dev \ libwayland-dev \ libdecor-0-dev - name: Install additional MicroPythonOS dependencies run: | sudo apt-get update sudo apt-get install -y libv4l-dev librlottie-dev - name: Extract OS version id: version run: | OS_VERSION=$(grep "release = " internal_filesystem/lib/mpos/build_info.py | cut -d "=" -f 2 | cut -d "#" -f 1 | tr -d " " | tr -d '"') echo "OS_VERSION=$OS_VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $OS_VERSION" - name: Build LVGL MicroPython for unix run: | ./scripts/build_mpos.sh unix - name: Run syntax tests on unix run: | ./tests/syntax.sh continue-on-error: true - name: Run unit tests on unix run: | ./tests/unittest.sh mv lvgl_micropython/build/lvgl_micropy_unix lvgl_micropython/build/MicroPythonOS_amd64_linux_${{ steps.version.outputs.OS_VERSION }}.elf continue-on-error: true - name: Upload built binary as artifact uses: actions/upload-artifact@v4 with: name: MicroPythonOS_amd64_linux_${{ steps.version.outputs.OS_VERSION }}.elf path: lvgl_micropython/build/MicroPythonOS_amd64_linux_${{ steps.version.outputs.OS_VERSION }}.elf retention-days: 7 - name: Build LVGL MicroPython esp32 run: | ./scripts/build_mpos.sh esp32 mv lvgl_micropython/build/lvgl_micropy_ESP32_GENERIC_S3-SPIRAM_OCT-16.bin lvgl_micropython/build/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.bin mv lvgl_micropython/lib/micropython/ports/esp32/build-ESP32_GENERIC_S3-SPIRAM_OCT/micropython.bin lvgl_micropython/lib/micropython/ports/esp32/build-ESP32_GENERIC_S3-SPIRAM_OCT/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.ota - name: Upload built binary as artifact uses: actions/upload-artifact@v4 with: name: MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.bin path: lvgl_micropython/build/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.bin retention-days: 7 - name: Upload built binary as artifact uses: actions/upload-artifact@v4 with: name: MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.ota path: lvgl_micropython/lib/micropython/ports/esp32/build-ESP32_GENERIC_S3-SPIRAM_OCT/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.ota retention-days: 7