Enable cross-compilation of rust libraries. #207
Workflow file for this run
This file contains 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 | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, windows-2019, macos-14] | |
rust: [stable] | |
experimental: [false] | |
include: | |
- os: ubuntu-20.04 | |
rust: nightly | |
experimental: true | |
- os: windows-2019 | |
rust: nightly | |
experimental: true | |
- os: macos-14 | |
rust: nightly | |
experimental: true | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install Rust | |
run: rustup toolchain install ${{ matrix.rust }} --profile minimal --component rustfmt clippy | |
- name: Install Dependencies (Linux) | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: sudo apt-get update && sudo apt-get install libpulse-dev pulseaudio | |
- name: Check format | |
shell: bash | |
run: rustup run ${{ matrix.rust }} cargo fmt --all -- --check | |
# Skip clippy checks for `systest` | |
- name: Clippy | |
shell: bash | |
run: rustup run ${{ matrix.rust }} cargo clippy -p cubeb -p cubeb-backend -p cubeb-core -p cubeb-sys -- -D warnings | |
- name: Build | |
shell: bash | |
run: rustup run ${{ matrix.rust }} cargo build --all | |
- name: Start Sound Server (Linux) | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: pulseaudio -D --start | |
- name: Setup Audio | |
if: ${{ matrix.os == 'macos-14' }} | |
run: | | |
brew install switchaudio-osx | |
brew install blackhole-2ch | |
SwitchAudioSource -s "BlackHole 2ch" -t input | |
SwitchAudioSource -s "BlackHole 2ch" -t output | |
- name: Grant microphone access | |
if: ${{ matrix.os == 'macos-14' }} | |
env: | |
tcc_extra_columns: ${{ matrix.os == 'macos-14' && ',NULL,NULL,''UNUSED'',1687786159' || '' }} | |
run: sqlite3 $HOME/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR IGNORE INTO access VALUES ('kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159${{ env.tcc_extra_columns }});" | |
- name: Test | |
shell: bash | |
run: rustup run ${{ matrix.rust }} cargo test --all | |
- name: Run systest | |
shell: bash | |
run: rustup run ${{ matrix.rust }} cargo run -p systest | |
build_arm_linux: | |
name: Cross-compile for aarch64 linux | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install Rust | |
shell: bash | |
run: rustup target add aarch64-unknown-linux-gnu | |
- name: Install crossbuild headers | |
shell: bash | |
run: sudo apt-get update && sudo apt-get install -y crossbuild-essential-arm64 | |
- name: Build cross compile aarch64 | |
shell: bash | |
run: cargo build --workspace --exclude systest --target aarch64-unknown-linux-gnu |