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: 45ab801c300d605db96229f6e0626ebe2801f24d
 | 
						|
 | 
						|
jobs:
 | 
						|
  deps:
 | 
						|
    runs-on: ubuntu-20.04
 | 
						|
    name: Dependencies
 | 
						|
    steps:
 | 
						|
    - name: Workspace Cache
 | 
						|
      id: cache
 | 
						|
      uses: actions/cache@v2
 | 
						|
      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@v2
 | 
						|
      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: picow
 | 
						|
          board: PICO_W
 | 
						|
 | 
						|
    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
 | 
						|
 | 
						|
    steps:
 | 
						|
    - name: Compiler Cache
 | 
						|
      uses: actions/cache@v2
 | 
						|
      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@v2
 | 
						|
      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@v2
 | 
						|
      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.uf2
 | 
						|
        cp firmware.elf $RELEASE_FILE.elf        
 | 
						|
 | 
						|
    - name: Store .uf2 as artifact
 | 
						|
      uses: actions/upload-artifact@v2
 | 
						|
      with:
 | 
						|
        name: ${{env.RELEASE_FILE}}.uf2
 | 
						|
        path: micropython/ports/rp2/build-${{matrix.board}}/${{env.RELEASE_FILE}}.uf2
 | 
						|
 | 
						|
    - name: Store .elf as artifact
 | 
						|
      uses: actions/upload-artifact@v2
 | 
						|
      with:
 | 
						|
        name: ${{env.RELEASE_FILE}}.elf
 | 
						|
        path: micropython/ports/rp2/build-${{matrix.board}}/${{env.RELEASE_FILE}}.elf
 | 
						|
 | 
						|
    - 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}}.uf2
 | 
						|
        asset_content_type: application/octet-stream
 |