Develop #56
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: ci | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build-linux: | |
name: build / linux / ffmpeg ${{ matrix.ffmpeg_version }} | |
runs-on: ubuntu-latest | |
container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu | |
env: | |
RUSTFLAGS: "-C link-arg=-ldl -C link-arg=-lc -C link-arg=-lpthread -C link-args=-Wl,--no-as-needed" | |
strategy: | |
matrix: | |
include: | |
- ffmpeg_version: "5.1" | |
feature: "ffmpeg5,ndarray" | |
- ffmpeg_version: "6.1" | |
feature: "ffmpeg6,ndarray" | |
- ffmpeg_version: "7.1" | |
feature: "ffmpeg7,ndarray" | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
DEBIAN_FRONTEND=noninteractive apt-get update | |
DEBIAN_FRONTEND=noninteractive apt-get install -y \ | |
autoconf \ | |
automake \ | |
pkg-config \ | |
build-essential \ | |
ca-certificates \ | |
clang \ | |
curl \ | |
cmake \ | |
git-core \ | |
libc6-dev \ | |
libass-dev \ | |
libfreetype6-dev \ | |
libgnutls28-dev \ | |
libsdl2-dev \ | |
libtool \ | |
libva-dev \ | |
libvdpau-dev \ | |
libvorbis-dev \ | |
libxcb1-dev \ | |
libxcb-shm0-dev \ | |
libxcb-xfixes0-dev \ | |
texinfo \ | |
wget \ | |
yasm \ | |
nasm \ | |
zlib1g-dev \ | |
libx264-dev \ | |
libx265-dev \ | |
libnuma-dev \ | |
libvpx-dev \ | |
libfdk-aac-dev \ | |
libmp3lame-dev \ | |
libopus-dev | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Rust Cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Build | |
run: cargo build --no-default-features --features ${{ matrix.feature }} --verbose | |
- name: Run Test | |
run: cargo test --no-default-features --features ${{ matrix.feature }} --verbose | |
build-macos: | |
name: build / macos / latest ffmpeg | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
brew install ffmpeg pkg-config | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Build | |
run: cargo build --verbose | |
- name: Run Test | |
run: cargo test --verbose | |
build-windows: | |
name: build / windows / latest ffmpeg | |
runs-on: windows-latest | |
env: | |
FFMPEG_DOWNLOAD_URL: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z | |
RUST_BACKTRACE: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
$VCINSTALLDIR = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath) | |
Add-Content $env:GITHUB_ENV "LIBCLANG_PATH=${VCINSTALLDIR}\VC\Tools\LLVM\x64\bin`n" | |
Invoke-WebRequest "${env:FFMPEG_DOWNLOAD_URL}" -OutFile ffmpeg-release-full-shared.7z | |
7z x ffmpeg-release-full-shared.7z | |
mv ffmpeg-*/* ffmpeg/ | |
Add-Content $env:GITHUB_ENV "FFMPEG_DIR=${pwd}\ffmpeg`n" | |
Add-Content $env:GITHUB_ENV "FFMPEG_INCLUDE_DIR=${pwd}\ffmpeg\include`n" | |
Add-Content $env:GITHUB_ENV "FFMPEG_LIBS_DIR=${pwd}\ffmpeg\lib`n" | |
Add-Content $env:GITHUB_ENV "FFMPEG_DLL_PATH=${pwd}\ffmpeg\bin`n" | |
Add-Content $env:GITHUB_PATH "${pwd}\ffmpeg\bin`n" | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Build | |
run: cargo build --verbose | |
# TODO: Fix linking error on Windows | |
# error: linking with `link.exe` failed: exit code: 1181 | |
# note: LINK : fatal error LNK1181: cannot open input file 'bin.lib' | |
# - name: Run Test | |
# run: cargo test --verbose | |
test: | |
runs-on: ubuntu-latest | |
container: jrottenberg/ffmpeg:7.1-ubuntu | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
DEBIAN_FRONTEND=noninteractive apt-get update | |
DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential ca-certificates clang curl pkg-config | |
# - name: Setup Rust | |
# uses: dtolnay/rust-toolchain@stable | |
# TODO: Temporarily use nightly version of Rust for tests. Stable | |
# currently has a bug that causes linking to fail. The fix is in | |
# https://github.com/rust-lang/rust/commit/9ed0d11efbec18a1fa4155576a3bcb685676d23c | |
# and will hit stable at some point. | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Test | |
run: cargo +nightly test --verbose | |
lints: | |
runs-on: ubuntu-latest | |
container: jrottenberg/ffmpeg:7.1-ubuntu | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
DEBIAN_FRONTEND=noninteractive apt-get update | |
DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential ca-certificates clang curl pkg-config | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Rustfmt | |
run: cargo fmt --all -- --check | |
- name: Clippy | |
run: cargo clippy --all -- -D warnings |