Skip to content

馃Ъ Clean up Metal implementation #1323

馃Ъ Clean up Metal implementation

馃Ъ Clean up Metal implementation #1323

Workflow file for this run

on: [push, pull_request]
name: CI
jobs:
check_msrv:
name: Check MSRV (1.69.0)
strategy:
matrix:
include:
- os: ubuntu-latest
features: vulkan
- os: windows-latest
features: vulkan,d3d12
- os: macos-latest
features: vulkan,metal
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
# Note that examples are extempt from the MSRV check, so that they can use newer Rust features
- run: cargo check --workspace --features ${{ matrix.features }} --no-default-features
test:
name: Test Suite
strategy:
matrix:
include:
- os: ubuntu-latest
features: vulkan,visualizer
- os: windows-latest
features: vulkan,visualizer,d3d12,public-winapi
- os: macos-latest
features: vulkan,visualizer,metal
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Cargo test all targets
run: cargo test --workspace --all-targets --features ${{ matrix.features }} --no-default-features
- name: Cargo test docs
run: cargo test --workspace --doc --features ${{ matrix.features }} --no-default-features
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cargo fmt
run: cargo fmt --all -- --check
clippy:
name: Clippy
strategy:
matrix:
include:
- os: ubuntu-latest
features: vulkan,visualizer
- os: windows-latest
features: vulkan,visualizer,d3d12,public-winapi
- os: macos-latest
features: vulkan,visualizer,metal
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Cargo clippy
run: cargo clippy --workspace --all-targets --features ${{ matrix.features }} --no-default-features -- -D warnings
- name: Install nightly Rust
uses: dtolnay/rust-toolchain@nightly
- name: Generate lockfile with minimal dependency versions
run: cargo +nightly generate-lockfile -Zminimal-versions
- name: Bump `libc 0.1` version to `0.2` via `malloc_buf 0.0.6`
if: ${{ runner.os == 'macOS' }}
run: |
# The 7-year-unmaintained malloc_buf (depended on via metal-rs->objc)
# only allows using libc 0.2 since the 0.0.6 release, which is necessary
# since the libc 0.1 range no longer compiles. Fortunately objc which
# is also unmaintained for 4 years depends on malloc_buf >=0.0,<0.1.0,
# allowing the 0.0.6 release to be used (but not the 1.0.0 release).
cargo update -p malloc_buf --precise 0.0.6
- name: Cargo clippy with minimal-versions
run: cargo +stable clippy --workspace --all-targets --features ${{ matrix.features }} --no-default-features -- -D warnings
doc:
name: Build documentation
strategy:
matrix:
# Rely on Windows and Mac to also compile the Vulkan portion (via --all-features)
os: [windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@v4
- name: Build documentation
run: cargo doc --no-deps --workspace --all-features --document-private-items
readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use cached cargo-readme
uses: actions/cache@v4
id: cargo-readme-cache
with:
path: ~/.cargo/bin/cargo-readme
key: ${{ runner.os }}-cargo-readme
- name: Install cargo-readme
if: steps.cargo-readme-cache.outputs.cache-hit != 'true'
run: cargo install cargo-readme
- name: Check if README.md is up-to-date
run: |
cargo readme > README.md
git diff --quiet || (echo '::error::Generated README is different, please regenerate with `cargo readme > README.md`'; git diff; false)