Skip to content

Mark Wine as supported #861

Mark Wine as supported

Mark Wine as supported #861

Workflow file for this run

name: CI
on:
push:
branches: [ "master", "v0.7.x", "v0.8.x" ]
pull_request:
branches: [ "master", "v0.7.x", "v0.8.x" ]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
CI: true
WASMTIME_VERSION: 41.0.3
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
Test:
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-hack
- name: Check all features
run: cargo hack check --feature-powerset
- name: Tests
run: cargo test --all-features
- name: Tests release build
run: cargo test --release --all-features
TestPoll:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
RUSTFLAGS: "--cfg mio_unsupported_force_poll_poll"
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Tests
run: cargo test --all-features
- name: Tests release build
run: cargo test --release --all-features
TestWakerPipe:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
RUSTFLAGS: "--cfg mio_unsupported_force_waker_pipe"
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Tests
run: cargo test --all-features
- name: Tests release build
run: cargo test --release --all-features
MinimalVersions:
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@nightly
- name: Install minimal verions
run: cargo update -Zminimal-versions
- name: Tests
run: cargo test --all-features
MSRV:
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
- name: Check
# We only run check allowing us to use newer features in tests.
run: cargo check --all-features
TestWASI:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Setup `wasmtime`
run: |
curl -OL https://github.com/bytecodealliance/wasmtime/releases/download/v${WASMTIME_VERSION}/wasmtime-v${WASMTIME_VERSION}-x86_64-linux.tar.xz
tar xf wasmtime-v${WASMTIME_VERSION}-x86_64-linux.tar.xz
echo CARGO_TARGET_WASM32_WASIP2_RUNNER="$(pwd)/wasmtime-v${WASMTIME_VERSION}-x86_64-linux/wasmtime run -Sinherit-network" >> $GITHUB_ENV
- name: Install target
run: rustup target add wasm32-wasip2
- name: Tests
run: cargo test --target wasm32-wasip2 --all-features
Nightly:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@nightly
- name: Tests
run: cargo test --all-features
Clippy:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Clippy
run: cargo clippy --all-targets --all-features -- --allow clippy::mixed-attributes-style --allow clippy::unused-io-amount --allow clippy::needless-lifetimes -D warnings
Docs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Check docs
run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features
Rustfmt:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
# FIXME: for some reason this doesn't actually check all files.
# So instead we run `rustfmt` directly on each file.
#cargo fmt --all -- --check
run: find src tests examples -type f -iname "*.rs" | xargs rustfmt --check
CheckTargets:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
target:
- aarch64-apple-darwin
- aarch64-apple-ios
- aarch64-apple-tvos
- aarch64-apple-visionos
- aarch64-apple-watchos
- aarch64-linux-android
- aarch64-unknown-freebsd
- aarch64-unknown-fuchsia
- aarch64-unknown-hermit
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- aarch64-unknown-netbsd
- aarch64-unknown-nto-qnx710
- aarch64-unknown-openbsd
- aarch64-unknown-redox
- arm-linux-androideabi
- arm64_32-apple-watchos
- armv6k-nintendo-3ds
- armv7-sony-vita-newlibeabihf
- i686-unknown-linux-gnu
- i686-unknown-hurd-gnu
# TODO: reenable <https://github.com/tokio-rs/mio/issues/1882>.
#- powerpc64-ibm-aix
- riscv32imc-esp-espidf
- sparcv9-sun-solaris
- wasm32-wasip1
- x86_64-apple-darwin
- x86_64-apple-ios
- x86_64-pc-nto-qnx710
- x86_64-pc-solaris
# TODO: solve the following err:
# `Error calling dlltool 'x86_64-w64-mingw32-dlltool'`, build log:
# <https://github.com/tokio-rs/mio/actions/runs/9436499623/job/25991326487?pr=1794>.
#- x86_64-pc-windows-gnu
- x86_64-pc-windows-msvc
- x86_64-unknown-dragonfly
- x86_64-unknown-freebsd
- x86_64-unknown-fuchsia
- x86_64-unknown-haiku
- x86_64-unknown-hermit
- x86_64-unknown-illumos
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- x86_64-unknown-netbsd
- x86_64-unknown-openbsd
- x86_64-unknown-redox
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
- uses: taiki-e/install-action@cargo-hack
- name: Run check
run: cargo hack check -Z build-std=std,panic_abort --feature-powerset --target ${{ matrix.target }}
Sanitizer:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
sanitizer: [address, leak, memory, thread]
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@nightly
- name: Add rust source
run: rustup component add rust-src
- name: Run tests with sanitizer
run: make test_sanitizer SAN=${{ matrix.sanitizer }}
TestFreeBSD:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- freebsd_version: "14.4"
target: x86_64-unknown-freebsd
arch: x86_64
- freebsd_version: "15.0"
target: x86_64-unknown-freebsd
arch: x86_64
- freebsd_version: "14.4"
target: i686-unknown-freebsd
arch: i686
name: FreeBSD/${{ matrix.arch }} ${{ matrix.freebsd_version }}
steps:
- uses: actions/checkout@v7
- name: Start VM
uses: vmactions/freebsd-vm@v1
with:
release: ${{ matrix.freebsd_version }}
usesh: true
- name: Install dependencies
shell: freebsd {0}
run: |
pkg install -y curl
fetch https://sh.rustup.rs -o rustup.sh
sh rustup.sh -y --profile=minimal
if [ "${{ matrix.target }}" = "i686-unknown-freebsd" ]; then
. $HOME/.cargo/env
rustup target add i686-unknown-freebsd
fi
- name: Tests
shell: freebsd {0}
run: |
. $HOME/.cargo/env
cargo test --target ${{ matrix.target }} --all-features
TestSolaris:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Start VM
uses: vmactions/solaris-vm@v1
with:
release: "11.4-gcc"
usesh: true
copyback: false
- name: Install dependencies
shell: solaris {0}
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup.sh
sh rustup.sh -y --profile=minimal
- name: Tests
shell: solaris {0}
run: |
. $HOME/.cargo/env
cargo test --all-features
Wine:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install wine
run: |
# https://gitlab.winehq.org/wine/wine/-/wikis/Debian-Ubuntu
wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key -
sudo dpkg --add-architecture i386
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
sudo apt-get update
sudo apt-get install -y winehq-stable wine-binfmt
echo -1 | sudo tee /proc/sys/fs/binfmt_misc/cli # deregister mono handler for PE files
- name: Install linker and libraries
run: |
sudo apt-get install -y gcc-mingw-w64-x86-64
- name: Install target
run: rustup target add x86_64-pc-windows-gnu
- name: Tests
run: cargo test --all-features --target x86_64-pc-windows-gnu
- name: Tests release build
run: cargo test --release --all-features --target x86_64-pc-windows-gnu
# Single job required to merge the pr.
Passed:
runs-on: ubuntu-latest
needs:
- Test
- TestPoll
- MinimalVersions
- MSRV
- Nightly
- Clippy
- Docs
- Rustfmt
- CheckTargets
- TestFreeBSD
- TestSolaris
steps:
- run: exit 0