mirror of
https://github.com/project-slippi/cpal.git
synced 2025-10-06 00:02:40 +02:00
Fixes #721 Changes to a dependency library broke compilation of the example. Changes needed to get the example working and warning-free include: 1. specifying additional type constraints in local implementations 2. using the `FromSample` trait to convert samples in the handler 3. adding a default matcher in response to the non-exhaustive attribute on `SampleFormat` Also adds a github action to ensure the wasm-beep example compiles.
330 lines
9.5 KiB
YAML
330 lines
9.5 KiB
YAML
name: cpal
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
|
|
clippy-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Update apt
|
|
run: sudo apt update
|
|
- name: Install alsa
|
|
run: sudo apt-get install libasound2-dev
|
|
- name: Install libjack
|
|
run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
components: clippy
|
|
target: armv7-linux-androideabi
|
|
- name: Run clippy
|
|
uses: actions-rs/clippy-check@v1
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
args: --all --all-features
|
|
- name: Run clippy for Android target
|
|
uses: actions-rs/clippy-check@v1
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
args: --all --features asio --features oboe/fetch-prebuilt --target armv7-linux-androideabi
|
|
|
|
rustfmt-check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
components: rustfmt
|
|
- name: Run rustfmt
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: fmt
|
|
args: --all -- --check
|
|
|
|
cargo-publish:
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Install rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
- name: Update apt
|
|
run: sudo apt update
|
|
- name: Install alsa
|
|
run: sudo apt-get install libasound2-dev
|
|
- name: Verify publish crate
|
|
uses: katyo/publish-crates@v1
|
|
with:
|
|
dry-run: true
|
|
ignore-unpublished-changes: true
|
|
- name: Publish crate
|
|
uses: katyo/publish-crates@v1
|
|
with:
|
|
ignore-unpublished-changes: true
|
|
registry-token: ${{ secrets.CRATESIO_TOKEN }}
|
|
|
|
ubuntu-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Update apt
|
|
run: sudo apt update
|
|
- name: Install alsa
|
|
run: sudo apt-get install libasound2-dev
|
|
- name: Install libjack
|
|
run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
- name: Run without features
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --all --no-default-features --verbose
|
|
- name: Run all features
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --all --all-features --verbose
|
|
|
|
linux-check-and-test-armv7:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install stable toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
target: armv7-unknown-linux-gnueabihf
|
|
override: true
|
|
|
|
- name: Build image
|
|
run: docker build -t cross/cpal_armv7:v1 ./
|
|
|
|
- name: Check without features for armv7
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: check
|
|
use-cross: true
|
|
args: --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose
|
|
|
|
- name: Test without features for armv7
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
use-cross: true
|
|
args: --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose
|
|
|
|
- name: Check all features for armv7
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: check
|
|
use-cross: true
|
|
args: --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose
|
|
|
|
- name: Test all features for armv7
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
use-cross: true
|
|
args: --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose
|
|
|
|
asmjs-wasm32-test:
|
|
strategy:
|
|
matrix:
|
|
target: [asmjs-unknown-emscripten, wasm32-unknown-emscripten]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Setup Emscripten toolchain
|
|
uses: mymindstorm/setup-emsdk@v10
|
|
with:
|
|
version: 2.0.9 # https://github.com/rust-lang/rust/issues/85821
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
target: ${{ matrix.target }}
|
|
- name: Build beep example
|
|
run: cargo build --example beep --release --target ${{ matrix.target }}
|
|
|
|
wasm32-bindgen-test:
|
|
|
|
strategy:
|
|
matrix:
|
|
target: [wasm32-unknown-unknown]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
target: ${{ matrix.target }}
|
|
- name: Build beep example
|
|
run: cargo build --example beep --target ${{ matrix.target }} --features=wasm-bindgen
|
|
|
|
wasm32-wasi-test:
|
|
|
|
strategy:
|
|
matrix:
|
|
target: [wasm32-wasi]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
target: ${{ matrix.target }}
|
|
- name: Build beep example
|
|
run: cargo build --example beep --target ${{ matrix.target }}
|
|
|
|
windows-test:
|
|
strategy:
|
|
matrix:
|
|
version: [x86_64, i686]
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install ASIO SDK
|
|
env:
|
|
LINK: https://www.steinberg.net/asiosdk
|
|
run: |
|
|
curl -L -o asio.zip $env:LINK
|
|
7z x -oasio asio.zip
|
|
move asio\*\* asio\
|
|
- name: Install ASIO4ALL
|
|
run: choco install asio4all
|
|
- name: Install llvm and clang
|
|
run: choco install llvm
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
target: ${{ matrix.version }}-pc-windows-msvc
|
|
override: true
|
|
- name: Run without features
|
|
run: cargo test --all --no-default-features --verbose
|
|
- name: Run all features
|
|
run: |
|
|
$Env:CPAL_ASIO_DIR = "$Env:GITHUB_WORKSPACE\asio"
|
|
cargo test --all --all-features --verbose
|
|
|
|
macos-test:
|
|
runs-on: macOS-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install llvm and clang
|
|
run: brew install llvm
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
- name: Build beep example
|
|
run: cargo build --example beep
|
|
- name: Run without features
|
|
run: cargo test --all --no-default-features --verbose
|
|
- name: Run all features
|
|
run: cargo test --all --all-features --verbose
|
|
|
|
android-check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
target: armv7-linux-androideabi
|
|
- name: Check android
|
|
run: cargo check --example android --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
|
|
- name: Check beep
|
|
run: cargo check --example beep --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
|
|
- name: Check enumerate
|
|
run: cargo check --example enumerate --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
|
|
- name: Check feedback
|
|
run: cargo check --example feedback --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
|
|
- name: Check record_wav
|
|
run: cargo check --example record_wav --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
|
|
|
|
android-apk-build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Android targets
|
|
run: |
|
|
rustup target add armv7-linux-androideabi
|
|
rustup target add aarch64-linux-android
|
|
rustup target add i686-linux-android
|
|
rustup target add x86_64-linux-android
|
|
- name: Install Cargo APK
|
|
run: cargo install cargo-apk
|
|
- name: Build APK
|
|
run: cargo apk build --example android
|
|
|
|
ios-build:
|
|
runs-on: macOS-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install llvm and clang
|
|
run: brew install llvm
|
|
- name: Install stable
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
- name: Add iOS targets
|
|
run: rustup target add aarch64-apple-ios x86_64-apple-ios
|
|
- name: Install cargo lipo
|
|
run: cargo install cargo-lipo
|
|
- name: Build iphonesimulator feedback example
|
|
run: cd examples/ios-feedback && xcodebuild -scheme cpal-ios-example -configuration Debug -derivedDataPath build -sdk iphonesimulator
|
|
|
|
wasm-beep-build:
|
|
# this only confirms that the Rust source builds
|
|
# and checks to prevent regressions like #721.
|
|
#
|
|
# It does not test the javascript/web integration
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Target
|
|
run: rustup target add wasm32-unknown-unknown
|
|
- name: Cargo Build
|
|
working-directory: ./examples/wasm-beep
|
|
run: cargo build --target wasm32-unknown-unknown
|
|
|