mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2025-01-10 21:21:29 +11:00
2496098890
This update rewrites the winit's Wayland backend using new wayland-rs 0.30 API. This fixes long standing issue with the forward compatibility of the wayland backend, meaning that future updates to the wayland protocol won't break rust code anymore. like it was before when adding new shm/enum variants into the protocol. Fixes #2560. Fixes #2164. Fixes #2128. Fixes #1760. Fixes #725.
156 lines
6 KiB
YAML
156 lines
6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [master]
|
|
|
|
jobs:
|
|
Check_Formatting:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: hecrj/setup-rust-action@v1
|
|
with:
|
|
rust-version: stable
|
|
components: rustfmt
|
|
- name: Check Formatting
|
|
run: cargo +stable fmt --all -- --check
|
|
|
|
cargo-deny:
|
|
name: cargo-deny
|
|
|
|
# TODO: remove this matrix when https://github.com/EmbarkStudios/cargo-deny/issues/324 is resolved
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform:
|
|
- aarch64-apple-ios
|
|
- aarch64-linux-android
|
|
- i686-pc-windows-gnu
|
|
- i686-pc-windows-msvc
|
|
- i686-unknown-linux-gnu
|
|
- wasm32-unknown-unknown
|
|
- x86_64-apple-darwin
|
|
- x86_64-apple-ios
|
|
- x86_64-pc-windows-gnu
|
|
- x86_64-pc-windows-msvc
|
|
- x86_64-unknown-linux-gnu
|
|
- x86_64-unknown-redox
|
|
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: EmbarkStudios/cargo-deny-action@v1
|
|
with:
|
|
command: check
|
|
log-level: error
|
|
arguments: --all-features --target ${{ matrix.platform }}
|
|
|
|
tests:
|
|
name: Tests
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
rust_version: ['1.64.0', stable, nightly]
|
|
platform:
|
|
# Note: Make sure that we test all the `docs.rs` targets defined in Cargo.toml!
|
|
- { target: x86_64-pc-windows-msvc, os: windows-latest, }
|
|
- { target: i686-pc-windows-msvc, os: windows-latest, }
|
|
- { target: x86_64-pc-windows-gnu, os: windows-latest, host: -x86_64-pc-windows-gnu }
|
|
- { target: i686-pc-windows-gnu, os: windows-latest, host: -i686-pc-windows-gnu }
|
|
- { target: i686-unknown-linux-gnu, os: ubuntu-latest, }
|
|
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, }
|
|
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: x11 }
|
|
- { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: "wayland,wayland-dlopen" }
|
|
- { target: aarch64-linux-android, os: ubuntu-latest, options: -p winit, cmd: 'apk --', features: "android-native-activity" }
|
|
- { target: x86_64-unknown-redox, os: ubuntu-latest, }
|
|
- { target: x86_64-apple-darwin, os: macos-latest, }
|
|
- { target: x86_64-apple-ios, os: macos-latest, }
|
|
- { target: aarch64-apple-ios, os: macos-latest, }
|
|
# We're using Windows rather than Ubuntu to run the wasm tests because caching cargo-web
|
|
# doesn't currently work on Linux.
|
|
- { target: wasm32-unknown-unknown, os: windows-latest, }
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
CARGO_INCREMENTAL: 0
|
|
PKG_CONFIG_ALLOW_CROSS: 1
|
|
RUSTFLAGS: "-C debuginfo=0 --deny warnings"
|
|
OPTIONS: ${{ matrix.platform.options }}
|
|
FEATURES: ${{ format(',{0}', matrix.platform.features ) }}
|
|
CMD: ${{ matrix.platform.cmd }}
|
|
RUSTDOCFLAGS: -Dwarnings
|
|
|
|
runs-on: ${{ matrix.platform.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
# Used to cache cargo-web
|
|
- name: Cache cargo folder
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo
|
|
key: ${{ matrix.platform.target }}-cargo-${{ matrix.rust_version }}
|
|
|
|
- uses: hecrj/setup-rust-action@v1
|
|
with:
|
|
rust-version: ${{ matrix.rust_version }}${{ matrix.platform.host }}
|
|
targets: ${{ matrix.platform.target }}
|
|
components: clippy
|
|
|
|
- name: Install Linux dependencies
|
|
if: (matrix.platform.os == 'ubuntu-latest')
|
|
run: sudo apt-get update && sudo apt-get install pkg-config libxkbcommon-dev
|
|
- name: Install GCC Multilib
|
|
if: (matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')
|
|
run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install g++-multilib gcc-multilib libxkbcommon-dev:i386
|
|
- name: Install cargo-apk
|
|
if: contains(matrix.platform.target, 'android')
|
|
run: cargo install cargo-apk
|
|
|
|
- name: Check documentation
|
|
shell: bash
|
|
run: cargo doc --no-deps --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES --document-private-items
|
|
|
|
- name: Build crate
|
|
shell: bash
|
|
run: cargo $CMD build --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES
|
|
|
|
- name: Build tests
|
|
shell: bash
|
|
if: >
|
|
!contains(matrix.platform.target, 'redox') &&
|
|
matrix.rust_version != '1.64.0'
|
|
run: cargo $CMD test --no-run --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES
|
|
|
|
- name: Run tests
|
|
shell: bash
|
|
if: >
|
|
!contains(matrix.platform.target, 'android') &&
|
|
!contains(matrix.platform.target, 'ios') &&
|
|
!contains(matrix.platform.target, 'wasm32') &&
|
|
!contains(matrix.platform.target, 'redox') &&
|
|
matrix.rust_version != '1.64.0'
|
|
run: cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES
|
|
|
|
- name: Lint with clippy
|
|
shell: bash
|
|
if: (matrix.rust_version == 'stable') && !contains(matrix.platform.options, '--no-default-features')
|
|
run: cargo clippy --all-targets --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES -- -Dwarnings
|
|
|
|
- name: Build tests with serde enabled
|
|
shell: bash
|
|
if: >
|
|
!contains(matrix.platform.target, 'redox') &&
|
|
matrix.rust_version != '1.64.0'
|
|
run: cargo $CMD test --no-run --verbose --target ${{ matrix.platform.target }} $OPTIONS --features serde,$FEATURES
|
|
- name: Run tests with serde enabled
|
|
shell: bash
|
|
if: >
|
|
!contains(matrix.platform.target, 'android') &&
|
|
!contains(matrix.platform.target, 'ios') &&
|
|
!contains(matrix.platform.target, 'wasm32') &&
|
|
!contains(matrix.platform.target, 'redox') &&
|
|
matrix.rust_version != '1.64.0'
|
|
run: cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features serde,$FEATURES
|