name: Build LVGL MicroPython for MacOS on: push: branches: - main pull_request: branches: - main workflow_dispatch: # allow manual workflow starts jobs: build: runs-on: macos-14 steps: - name: Checkout repository with submodules uses: actions/checkout@v4 with: submodules: recursive - name: Install dependencies via Homebrew run: | xcode-select --install || true # already installed on github brew install pkg-config libffi ninja make SDL2 - name: Show version numbers run: | xcodebuild -version clang --version - 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 macOS dev run: | ./scripts/build_mpos.sh macOS - name: Run syntax tests on macOS run: | ./tests/syntax.sh continue-on-error: true - name: Run unit tests on macOS run: | ./tests/unittest.sh mv lvgl_micropython/build/lvgl_micropy_macOS lvgl_micropython/build/MicroPythonOS_amd64_macOS_${{ steps.version.outputs.OS_VERSION }}.bin continue-on-error: true - name: Upload built binary as artifact uses: actions/upload-artifact@v4 with: name: MicroPythonOS_amd64_macOS_${{ steps.version.outputs.OS_VERSION }}.bin path: lvgl_micropython/build/MicroPythonOS_amd64_macOS_${{ steps.version.outputs.OS_VERSION }}.bin compression-level: 0 # don't zip it 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 compression-level: 0 # don't zip it 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 compression-level: 0 # don't zip it retention-days: 7 - name: Cleanup run: | rm lvgl_micropython/build/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.bin rm lvgl_micropython/lib/micropython/ports/esp32/build-ESP32_GENERIC_S3-SPIRAM_OCT/MicroPythonOS_esp32_${{ steps.version.outputs.OS_VERSION }}.ota