Status bar clock: stop allocating kilobytes per second #819
Workflow file for this run
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 LVGL MicroPython for macOS Intel | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '0 8 * * 1' # Monday morning — bitrot check for macOS | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: macos-15-intel | |
| timeout-minutes: 120 | |
| outputs: | |
| os-version: ${{ steps.version.outputs.OS_VERSION }} | |
| env: | |
| HOMEBREW_NO_AUTO_UPDATE: 1 | |
| HOMEBREW_NO_ANALYTICS: 1 | |
| LDFLAGS: -L/usr/local/opt/libffi/lib | |
| CPPFLAGS: -I/usr/local/opt/libffi/include | |
| PKG_CONFIG_PATH: /usr/local/opt/libffi/lib/pkgconfig | |
| CCACHE_DIR: ${{ github.workspace }}/.ccache | |
| CCACHE_BASEDIR: ${{ github.workspace }} | |
| CCACHE_COMPILERCHECK: content | |
| CCACHE_NOHASHDIR: true | |
| steps: | |
| - name: Checkout repository with submodules | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| 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 ccache | |
| - name: Restore compiler cache | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .ccache | |
| key: ccache-v1-${{ runner.os }}-${{ runner.arch }}-macos-intel-${{ github.sha }} | |
| restore-keys: | | |
| ccache-v1-${{ runner.os }}-${{ runner.arch }}-macos-intel- | |
| - name: Configure compiler cache | |
| run: | | |
| echo "$(brew --prefix ccache)/libexec" >> "$GITHUB_PATH" | |
| ccache --max-size 1G | |
| ccache --zero-stats | |
| - 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 | |
| cp lvgl_micropython/build/lvgl_micropy_macOS lvgl_micropython/build/MicroPythonOS_intel_macOS_${{ steps.version.outputs.OS_VERSION }}.bin | |
| - name: Upload built binary as artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: MicroPythonOS_intel_macOS_${{ steps.version.outputs.OS_VERSION }}.bin | |
| path: lvgl_micropython/build/MicroPythonOS_intel_macOS_${{ steps.version.outputs.OS_VERSION }}.bin | |
| retention-days: 7 | |
| - name: Run syntax tests on macOS | |
| run: | | |
| ./tests/syntax.sh | |
| - name: Show compiler cache statistics | |
| if: always() | |
| run: ccache --show-stats | |
| test: | |
| needs: build | |
| runs-on: macos-15-intel | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Install dependencies via Homebrew | |
| run: | | |
| xcode-select --install || true | |
| brew install pkg-config libffi ninja make SDL2 ccache | |
| - name: Download built binary | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: MicroPythonOS_intel_macOS_${{ needs.build.outputs.os-version }}.bin | |
| - name: Install binary to expected path | |
| run: | | |
| mkdir -p lvgl_micropython/build | |
| BIN=$(find . -name "MicroPythonOS_intel_macOS_*.bin" | head -1) | |
| cp "$BIN" lvgl_micropython/build/lvgl_micropy_macOS | |
| chmod +x lvgl_micropython/build/lvgl_micropy_macOS | |
| - name: Disable native/viper decorators | |
| run: | | |
| find -L internal_filesystem -name '*.py' -type f -print0 | while IFS= read -r -d '' f; do | |
| if [ -L "$f" ]; then continue; fi | |
| sed -i.bak -E 's/^([[:space:]]*)(@micropython\.(native|viper)[[:space:]]*)$/\1#\2/' "$f" | |
| done | |
| find -L internal_filesystem -name '*.py.bak' -type f -exec rm -f {} + | |
| - name: Run unit tests on macOS | |
| run: | | |
| ./scripts/test_runner.py | |
| - name: Restore native/viper decorators | |
| if: always() | |
| run: | | |
| find -L internal_filesystem -name '*.py' -type f -print0 | while IFS= read -r -d '' f; do | |
| if [ -L "$f" ]; then continue; fi | |
| sed -i.bak -E 's/^([[:space:]]*)#(@micropython\.(native|viper)[[:space:]]*)$/\1\2/' "$f" | |
| done | |
| find -L internal_filesystem -name '*.py.bak' -type f -exec rm -f {} + |