name: Rust checks on: push: pull_request: jobs: linux: runs-on: ubuntu-latest steps: - uses: https://github.com/actions/checkout@v4 - uses: https://github.com/dtolnay/rust-toolchain@1.98.0 with: components: rustfmt, clippy - name: Install native build dependencies run: | sudo apt-get update # GPUI, plus clang for the libobs bindings. sudo apt-get install -y build-essential pkg-config clang libfontconfig1-dev libfreetype6-dev \ libwayland-dev libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev libssl-dev # OBS 32.0.4 libobs and the bundled plugins (scripts/obs/build-linux.sh). sudo apt-get install -y cmake ninja-build extra-cmake-modules libavcodec-dev libavdevice-dev \ libavfilter-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev libx264-dev \ libcurl4-openssl-dev libmbedtls-dev libgl1-mesa-dev libglvnd-dev libgles2-mesa-dev libjansson-dev \ libx11-dev libx11-xcb-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \ libxcb-composite0-dev libxcb-xfixes0-dev libxcb-xinput-dev libxcomposite-dev libxinerama-dev \ libxss-dev libpci-dev libpipewire-0.3-dev libpulse-dev libudev-dev libva-dev libdrm-dev \ librist-dev libsrt-openssl-dev uthash-dev libsimde-dev nlohmann-json3-dev libffmpeg-nvenc-dev \ uuid-dev libglib2.0-dev - name: Cache the OBS runtime uses: https://github.com/actions/cache@v4 with: path: target/obs-runtime/linux-x86_64 key: obs-runtime-linux-${{ hashFiles('scripts/obs/versions.env', 'scripts/obs/build-linux.sh') }} - name: Build the OBS runtime run: | if [ ! -f target/obs-runtime/linux-x86_64/VERSION ]; then scripts/obs/build-linux.sh fi - name: Check formatting run: cargo fmt --all -- --check - name: Lint run: cargo clippy --locked --workspace --all-targets -- -D warnings - name: Test run: cargo test --locked --workspace - name: Build run: cargo build --locked --workspace windows-cross-check: runs-on: ubuntu-latest steps: - uses: https://github.com/actions/checkout@v4 - uses: https://github.com/dtolnay/rust-toolchain@1.98.0 with: components: clippy targets: x86_64-pc-windows-msvc # Type-checks the Windows code paths; nothing is linked or run. The GPUI # crate needs the MSVC C toolchain and is checked on Windows instead. - name: Lint Windows code paths run: > cargo clippy --locked --target x86_64-pc-windows-msvc -p clipbin-core -p clipbin-obs -p clipbin-probe --all-targets -- -D warnings