name: ci on: push: branches: - main pull_request: jobs: # Crates that must compile on every supported host platform. cross-platform: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - windows-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: toolchain: 1.93.0 components: rustfmt, clippy - name: cargo fmt run: cargo fmt --all --check - name: cargo clippy (cross-platform crates) run: > cargo clippy --workspace --exclude weft-compositor --exclude weft-servo-shell --exclude weft-app-shell --all-targets -- -D warnings - name: cargo test (cross-platform crates) run: > cargo test --workspace --exclude weft-compositor --exclude weft-servo-shell --exclude weft-app-shell # Wayland compositor and other Linux-only system crates. # These require libwayland-server and other Linux kernel interfaces. linux-only: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: toolchain: 1.93.0 components: rustfmt, clippy - name: install Linux system dependencies run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends \ libwayland-dev \ libxkbcommon-dev \ libegl-dev \ libgles2-mesa-dev \ libgbm-dev \ libdrm-dev \ libinput-dev \ libseat-dev \ libudev-dev \ libsystemd-dev \ libdisplay-info-dev \ pkg-config - name: cargo clippy (linux-only crates) run: > cargo clippy -p weft-compositor -p weft-servo-shell -p weft-app-shell --all-targets -- -D warnings - name: cargo test (linux-only crates) run: > cargo test -p weft-compositor -p weft-servo-shell -p weft-app-shell # Type-check the servo-embed feature gate. # Full Servo compilation (30-60 min) is not run in CI; this job checks # that the feature-gated code at least type-checks against the declared deps. servo-embed-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: toolchain: 1.93.0 - name: install Linux system dependencies run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends \ libwayland-dev \ libxkbcommon-dev \ libegl-dev \ libgles2-mesa-dev \ libgbm-dev \ libdrm-dev \ libfontconfig-dev \ llvm \ pkg-config - name: cargo check servo-embed (weft-servo-shell) run: > cargo check -p weft-servo-shell --features servo-embed - name: cargo check servo-embed (weft-app-shell) run: > cargo check -p weft-app-shell --features servo-embed