name: MicroPython on: push: pull_request: release: types: [created] env: MICROPYTHON_VERSION: feature/psram MICROPYTHON_FLAVOUR: pimoroni PIMORONI_PICO_VERSION: feature/sdk-2.0.0 jobs: build: name: ${{ matrix.name }} (${{ matrix.board }}) runs-on: ubuntu-20.04 continue-on-error: true strategy: matrix: include: - name: pico2_rp2350 board: RPI_PICO2 - name: pico2b_rp2350 board: RPI_PICO2B - name: plasma2350 board: PIMORONI_PLASMA2350 - name: tiny2350 board: PIMORONI_TINY2350 - name: pico_plus2_rp2350_psram board: PIMORONI_PICO_PLUS2 variant: PSRAM - name: pico_plus2_rp2350_psram_n_ppp board: PIMORONI_PICO_PLUS2 variant: PPP - name: pico_plus2_rp2350 board: PIMORONI_PICO_PLUS2 env: # MicroPython version will be contained in github.event.release.tag_name for releases RELEASE_FILE: ${{ matrix.name }}-${{ github.event.release.tag_name || github.sha }}-pimoroni-micropython PIMORONI_PICO_DIR: "${{ github.workspace }}/pimoroni-pico" MICROPY_BOARD_DIR: "${{ github.workspace }}/pimoroni-pico-rp2350-${{ github.sha }}/micropython/board/${{ matrix.BOARD }}" USER_C_MODULES: "${{ github.workspace }}/pimoroni-pico-rp2350-${{ github.sha }}/micropython/micropython-pico2.cmake" TAG_OR_SHA: ${{ github.event.release.tag_name || github.sha }} MICROPY_BOARD: ${{ matrix.board }} MICROPY_BOARD_VARIANT: ${{ matrix.variant }} BOARD_NAME: ${{ matrix.name }} BUILD_TOOLS: pimoroni-pico-rp2350-${{ github.sha }}/ci/micropython.sh steps: - name: Compiler Cache uses: actions/cache@v4 with: path: /home/runner/.ccache key: ccache-micropython-${{ matrix.name }}-${{ github.ref }}-${{ github.sha }} restore-keys: | ccache-micropython-${{ matrix.name }}-${{ github.ref }} ccache-micropython-${{ matrix.name }}- - uses: actions/checkout@v4 with: submodules: true path: pimoroni-pico-rp2350-${{ github.sha }} - uses: actions/checkout@v4 with: repository: pimoroni/pimoroni-pico ref: ${{env.PIMORONI_PICO_VERSION}} submodules: true path: pimoroni-pico - name: Install Arm GNU Toolchain (arm-none-eabi-gcc) uses: carlosperate/arm-none-eabi-gcc-action@v1 with: release: '9-2020-q2' - name: Install CCache run: | source $BUILD_TOOLS apt_install_build_deps - name: Checkout MicroPython & Submodules run: | source $BUILD_TOOLS micropython_clone - name: "Py_Decl: Checkout py_decl" uses: actions/checkout@v4 with: repository: gadgetoid/py_decl ref: v0.0.2 path: py_decl - name: Build MPY Cross run: | source $BUILD_TOOLS micropython_build_mpy_cross - name: Configure MicroPython shell: bash run: | source $BUILD_TOOLS micropython_version cmake_configure - name: Build MicroPython shell: bash run: | source $BUILD_TOOLS cmake_build - name: "Py_Decl: Verify UF2" shell: bash run: | python3 py_decl/py_decl.py --to-json --verify build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - name: Store .uf2 as artifact uses: actions/upload-artifact@v4 with: name: ${{ env.RELEASE_FILE }}.uf2 path: build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - name: Upload .uf2 if: github.event_name == 'release' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: asset_path: build-${{ matrix.name }}/firmware.uf2 upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ env.RELEASE_FILE }}.uf2 asset_content_type: application/octet-stream