kopia lustrzana https://github.com/pimoroni/pimoroni-pico
				
				
				
			
		
			
				
	
	
		
			145 wiersze
		
	
	
		
			4.5 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			145 wiersze
		
	
	
		
			4.5 KiB
		
	
	
	
		
			YAML
		
	
	
| name: MicroPython
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|   pull_request:
 | |
|   release:
 | |
|     types: [created]
 | |
| 
 | |
| env:
 | |
|   MICROPYTHON_VERSION: 294098d28e2bad0ac0aad0d72595d11a82798096
 | |
| 
 | |
| jobs:
 | |
|   deps:
 | |
|     runs-on: ubuntu-20.04
 | |
|     name: Dependencies
 | |
|     steps:
 | |
|     - name: Workspace Cache
 | |
|       id: cache
 | |
|       uses: actions/cache@v3
 | |
|       with:
 | |
|         path: ${{runner.workspace}}
 | |
|         key: workspace-micropython-${{env.MICROPYTHON_VERSION}}
 | |
|         restore-keys: |
 | |
|           workspace-micropython-${{env.MICROPYTHON_VERSION}}          
 | |
| 
 | |
|     # Check out MicroPython
 | |
|     - name: Checkout MicroPython
 | |
|       if: steps.cache.outputs.cache-hit != 'true'
 | |
|       uses: actions/checkout@v3
 | |
|       with:
 | |
|         repository: micropython/micropython
 | |
|         ref: ${{env.MICROPYTHON_VERSION}}
 | |
|         submodules: false  # MicroPython submodules are hideously broken
 | |
|         path: micropython
 | |
| 
 | |
|     - name: Fetch base MicroPython submodules
 | |
|       if: steps.cache.outputs.cache-hit != 'true'
 | |
|       shell: bash
 | |
|       working-directory: micropython
 | |
|       run: git submodule update --init
 | |
| 
 | |
|     - name: Fetch Pico SDK submodules
 | |
|       if: steps.cache.outputs.cache-hit != 'true'
 | |
|       shell: bash
 | |
|       working-directory: micropython/lib/pico-sdk
 | |
|       run: git submodule update --init
 | |
| 
 | |
|     - name: Build mpy-cross
 | |
|       if: steps.cache.outputs.cache-hit != 'true'
 | |
|       shell: bash
 | |
|       working-directory: micropython/mpy-cross
 | |
|       run: make
 | |
| 
 | |
|   build:
 | |
|     needs: deps
 | |
|     name: Build ${{matrix.board}}
 | |
|     runs-on: ubuntu-20.04
 | |
|     strategy:
 | |
|       matrix:
 | |
|         include:
 | |
|         - name: pico
 | |
|           board: PICO
 | |
|         - name: tiny2040
 | |
|           board: PIMORONI_TINY2040
 | |
|         - name: picolipo_4mb
 | |
|           board: PIMORONI_PICOLIPO_4MB
 | |
|         - name: picolipo_16mb
 | |
|           board: PIMORONI_PICOLIPO_16MB
 | |
|         - name: tufty2040
 | |
|           board: PIMORONI_TUFTY2040
 | |
| 
 | |
|     env:
 | |
|       # MicroPython version will be contained in github.event.release.tag_name for releases
 | |
|       RELEASE_FILE: pimoroni-${{matrix.name}}-${{github.event.release.tag_name || github.sha}}-micropython.uf2
 | |
| 
 | |
|     steps:
 | |
|     - name: Compiler Cache
 | |
|       uses: actions/cache@v3
 | |
|       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}}-          
 | |
|   
 | |
|     - name: Workspace Cache
 | |
|       uses: actions/cache@v3
 | |
|       with:
 | |
|         path: ${{runner.workspace}}
 | |
|         key: workspace-micropython-${{env.MICROPYTHON_VERSION}}
 | |
|         restore-keys: |
 | |
|           workspace-micropython-${{env.MICROPYTHON_VERSION}}          
 | |
| 
 | |
|     - name: Install Compiler & CCache
 | |
|       if: runner.os == 'Linux'
 | |
|       run: |
 | |
|         sudo apt update && sudo apt install ccache gcc-arm-none-eabi        
 | |
|   
 | |
|     - uses: actions/checkout@v3
 | |
|       with:
 | |
|         submodules: true
 | |
|         path: pimoroni-pico-${{ github.sha }}
 | |
|   
 | |
|     - name: "HACK: MicroPython Board Fixups"
 | |
|       shell: bash
 | |
|       working-directory: micropython/ports/rp2
 | |
|       run: |
 | |
|         ../../../pimoroni-pico-${GITHUB_SHA}/micropython/_board/board-fixup.sh ${{matrix.name}} ${{matrix.board}} ../../../pimoroni-pico-${GITHUB_SHA}/micropython/_board        
 | |
| 
 | |
|     - name: Configure MicroPython
 | |
|       shell: bash
 | |
|       working-directory: micropython/ports/rp2
 | |
|       run: |
 | |
|         cmake -S . -B build-${{matrix.board}} -DPICO_BUILD_DOCS=0 -DUSER_C_MODULES=../../../pimoroni-pico-${GITHUB_SHA}/micropython/modules/micropython-${{matrix.name}}.cmake -DMICROPY_BOARD=${{matrix.board}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache        
 | |
| 
 | |
|     - name: Build MicroPython
 | |
|       shell: bash
 | |
|       working-directory: micropython/ports/rp2
 | |
|       run: |
 | |
|         ccache --zero-stats || true
 | |
|         cmake --build build-${{matrix.board}} -j 2
 | |
|         ccache --show-stats || true        
 | |
| 
 | |
|     - name: Rename .uf2 for artifact
 | |
|       shell: bash
 | |
|       working-directory: micropython/ports/rp2/build-${{matrix.board}}
 | |
|       run: cp firmware.uf2 $RELEASE_FILE
 | |
| 
 | |
|     - name: Store .uf2 as artifact
 | |
|       uses: actions/upload-artifact@v3
 | |
|       with:
 | |
|         name: ${{env.RELEASE_FILE}}
 | |
|         path: micropython/ports/rp2/build-${{matrix.board}}/${{env.RELEASE_FILE}}
 | |
| 
 | |
|     - name: Upload .uf2
 | |
|       if: github.event_name == 'release'
 | |
|       uses: actions/upload-release-asset@v1
 | |
|       env:
 | |
|         GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
 | |
|       with:
 | |
|         asset_path: micropython/ports/rp2/build-${{matrix.board}}/firmware.uf2
 | |
|         upload_url: ${{github.event.release.upload_url}}
 | |
|         asset_name: ${{env.RELEASE_FILE}}
 | |
|         asset_content_type: application/octet-stream
 |