Attempt MacOS universal build #167
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
| on: | ||
| push: | ||
| pull_request: | ||
| permissions: | ||
| contents: write | ||
| env: | ||
| SKIP_RISCV: 1 | ||
| SKIP_OPENOCD: 0 | ||
| jobs: | ||
| build_windows: | ||
| name: Build Windows | ||
| # runs-on: [self-hosted, Windows, x64] | ||
| runs-on: 'windows-latest' | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| # - name: Setup SSH Auth | ||
| # if: runner.environment == 'github-hosted' | ||
| # uses: webfactory/[email protected] | ||
| # with: | ||
| # ssh-private-key: ${{ secrets.SSH_KEY }} | ||
| - name: Setup MSYS2 | ||
| uses: msys2/setup-msys2@v2 | ||
| - name: Build | ||
| run: | | ||
| subst P: . | ||
| P: | ||
| ./build.ps1 ./config/x64-win.json -SkipSigning -MSYS2Path (msys2 -c 'cygpath -m /').TrimEnd('\/') | ||
| - name: Upload Artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: tools-win-${{ runner.arch }} | ||
| path: | | ||
| bin/picotool-*-x64-win.zip | ||
| bin/pico-sdk-tools-*-x64-win.zip | ||
| bin/openocd-*-x64-win.zip | ||
| bin/riscv-toolchain-*-x64-win.zip | ||
| - name: Add Release Asset | ||
| uses: softprops/action-gh-release@v2 | ||
| if: startsWith(github.ref, 'refs/tags/') | ||
| with: | ||
| files: | | ||
| bin/picotool-*-x64-win.zip | ||
| bin/pico-sdk-tools-*-x64-win.zip | ||
| bin/openocd-*-x64-win.zip | ||
| bin/riscv-toolchain-*-x64-win.zip | ||
| build_macos: | ||
| name: Build MacOS | ||
| # runs-on: [self-hosted, macOS] | ||
| runs-on: 'macos-14' | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: Set up arm64 Homebrew | ||
| if: runner.environment == 'github-hosted' | ||
| id: set-up-homebrew | ||
| uses: Homebrew/actions/setup-homebrew@master | ||
| - name: Build | ||
| run: ./build_macos.sh | ||
| - name: Uninstall arm64 Homebrew | ||
| if: runner.environment == 'github-hosted' | ||
| run: | | ||
| NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" | ||
| rm -rf /opt/homebrew || true | ||
| - name: Set up x86_64 Homebrew | ||
| if: runner.environment == 'github-hosted' | ||
| run: | | ||
| NONINTERACTIVE=1 arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||
| - name: Install x86_64 pkg-config & cmake | ||
| if: runner.environment == 'github-hosted' | ||
| run: | | ||
| arch -x86_64 /usr/local/bin/brew install pkg-config cmake | ||
| - name: Build | ||
| run: arch -x86_64 ./build_macos.sh | ||
| - name: Merge Universal Binaries | ||
| run: ./merge_macos.sh | ||
| - name: Upload Artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: tools-mac-universal | ||
| path: | | ||
| bin/picotool-*-mac.zip | ||
| bin/pico-sdk-tools-*-mac.zip | ||
| bin/openocd-*-mac.zip | ||
| bin/riscv-toolchain-*-mac.zip | ||
| - name: Add Release Asset | ||
| uses: softprops/action-gh-release@v2 | ||
| if: startsWith(github.ref, 'refs/tags/') | ||
| with: | ||
| files: | | ||
| bin/picotool-*-mac.zip | ||
| bin/pico-sdk-tools-*-mac.zip | ||
| bin/openocd-*-mac.zip | ||
| bin/riscv-toolchain-*-mac.zip | ||
| build_linux: | ||
| name: Build Linux | ||
| # strategy: | ||
| # matrix: | ||
| # os: [[self-hosted, linux, x64], [self-hosted, linux, arm64]] | ||
| strategy: | ||
| matrix: | ||
| os: [ubuntu-22.04, [self-hosted, linux, arm64, bookworm, 8G]] | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| # - name: Setup SSH Auth | ||
| # if: runner.environment == 'github-hosted' | ||
| # uses: webfactory/[email protected] | ||
| # with: | ||
| # ssh-private-key: ${{ secrets.SSH_KEY }} | ||
| - name: Build | ||
| run: ./build_linux.sh | ||
| - name: Upload Artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: tools-lin-${{ runner.arch }} | ||
| path: | | ||
| bin/picotool-*-lin.tar.gz | ||
| bin/pico-sdk-tools-*-lin.tar.gz | ||
| bin/openocd-*-lin.tar.gz | ||
| bin/riscv-toolchain-*-lin.tar.gz | ||
| - name: Add Release Asset | ||
| uses: softprops/action-gh-release@v2 | ||
| if: startsWith(github.ref, 'refs/tags/') | ||
| with: | ||
| files: | | ||
| bin/picotool-*-lin.tar.gz | ||
| bin/pico-sdk-tools-*-lin.tar.gz | ||
| bin/openocd-*-lin.tar.gz | ||
| bin/riscv-toolchain-*-lin.tar.gz | ||
| test_binaries: | ||
| name: Test Binaries | ||
| needs: [build_linux, build_macos_arm64, build_windows] | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [macos-latest, windows-latest, [self-hosted, linux, arm64, bookworm_desktop], [self-hosted, linux, arm64, trixie_desktop]] | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - name: Download build (Windows) | ||
| if: ${{ runner.os == 'Windows' }} | ||
| uses: actions/download-artifact@v5 | ||
| with: | ||
| name: tools-win-${{ runner.arch }} | ||
| - name: Download build (MacOS Arm64) | ||
| if: ${{ runner.os == 'macOS' }} | ||
| uses: actions/download-artifact@v5 | ||
| with: | ||
| name: tools-mac-${{ runner.arch }} | ||
| - name: Download build (Linux) | ||
| if: ${{ runner.os == 'Linux' }} | ||
| uses: actions/download-artifact@v5 | ||
| with: | ||
| name: tools-lin-${{ runner.arch }} | ||
| - name: Extract build (zip) | ||
| if: ${{ runner.os == 'Windows' || runner.os == 'macOS' }} | ||
| shell: bash # Windows only has unzip in bash shell | ||
| run: | | ||
| unzip -o pico-sdk-tools*.zip | ||
| ls | ||
| unzip -o picotool*.zip | ||
| ls | ||
| unzip -o openocd*.zip || true | ||
| ls | ||
| unzip -o riscv-toolchain*.zip || true | ||
| ls | ||
| - name: Extract build (tar.gz) | ||
| if: ${{ runner.os == 'Linux' }} | ||
| run: | | ||
| tar -xvf pico-sdk-tools*.tar.gz | ||
| ls | ||
| tar -xvf picotool*.tar.gz | ||
| ls | ||
| tar -xvf openocd*.tar.gz || true | ||
| ls | ||
| tar -xvf riscv-toolchain*.tar.gz || true | ||
| ls | ||
| - name: Test default stuff runs | ||
| run: | | ||
| ./picotool/picotool version | ||
| ./pioasm/pioasm --version | ||
| - name: Test openocd runs | ||
| if: ${{ env.SKIP_OPENOCD != 1 }} | ||
| run: | | ||
| ./openocd --version | ||
| - name: Test riscv-toolchain runs | ||
| if: ${{ env.SKIP_RISCV != 1 }} | ||
| run: | | ||
| ./bin/riscv32-unknown-elf-gcc --version | ||
| ./bin/riscv32-unknown-elf-gdb --version | ||