Skip to content

Backport build.rs fixes to 2.x. #1733

Backport build.rs fixes to 2.x.

Backport build.rs fixes to 2.x. #1733

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
jobs:
rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: stable
- run: cargo fmt --all -- --check
check_cross:
name: Check Cross-Compilation
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [stable, beta]
include:
- build: stable
os: ubuntu-latest
rust: stable
- build: beta
os: ubuntu-latest
rust: beta
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- name: Install musl-tools
run: |
set -ex
sudo apt-get update
sudo apt-get install -y musl-tools
# Disable x86_64-pc-windows-msvc, x86_64-pc-windows-gnu,
# i686-pc-windows-msvc, and i686-pc-windows-gnu for now, since async-std
# doesn't currently support cross-compiling to Windows.
#
# Also disable x86_64-fuchsia and wasm32-unknown-emscripten, since
# async-std doesn't currently cross-compile on them.
- run: >
rustup target add
x86_64-unknown-linux-musl
x86_64-unknown-linux-gnux32
x86_64-linux-android
x86_64-apple-darwin
x86_64-unknown-freebsd
x86_64-unknown-netbsd
i686-unknown-linux-gnu
i686-unknown-linux-musl
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-unknown-linux-musl
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-unknown-linux-gnux32
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-linux-android
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-apple-darwin
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-unknown-freebsd
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-unknown-netbsd
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=i686-unknown-linux-gnu
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=i686-unknown-linux-musl
check_cross_windows:
name: Check Cross-Compilation on Windows
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [stable, beta]
include:
- build: stable
os: windows-latest
rust: stable
- build: beta
os: windows-latest
rust: beta
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- run: >
rustup target add
x86_64-pc-windows-gnu
i686-pc-windows-msvc
i686-pc-windows-gnu
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=x86_64-pc-windows-gnu
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=i686-pc-windows-msvc
- run: cargo check --workspace --bins --examples --tests --features=fs_utf8 --release -vv --target=i686-pc-windows-gnu
check_cross_nightly:
name: Check Cross-Compilation on Rust nightly
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [nightly]
include:
- build: nightly
os: ubuntu-latest
rust: nightly
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- name: Install musl-tools
run: |
set -ex
sudo apt-get update
sudo apt-get install -y musl-tools
# Disable x86_64-pc-windows-msvc, x86_64-pc-windows-gnu,
# i686-pc-windows-msvc, i686-pc-windows-gnu for now, and
# aarch64-pc-windows-msvc, since async-std doesn't currently support
# cross-compiling to Windows.
#
# Also disable x86_64-fuchsia and wasm32-unknown-emscripten, since
# async-std doesn't currently cross-compile on them.
- run: >
rustup target add
x86_64-unknown-linux-musl
x86_64-unknown-linux-gnux32
x86_64-linux-android
x86_64-apple-darwin
x86_64-unknown-freebsd
x86_64-unknown-netbsd
i686-unknown-linux-gnu
i686-unknown-linux-musl
aarch64-apple-darwin
riscv64gc-unknown-linux-gnu
arm-unknown-linux-gnueabihf
aarch64-linux-android
wasm32-wasip1
- run: cargo check --workspace --all-targets --all-features --release -vv
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-unknown-linux-musl
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-unknown-linux-gnux32
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-linux-android
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-apple-darwin
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-unknown-freebsd
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-unknown-netbsd
- run: cargo check --workspace --all-targets --all-features --release -vv --target=i686-unknown-linux-gnu
- run: cargo check --workspace --all-targets --all-features --release -vv --target=i686-unknown-linux-musl
- run: cargo check --workspace --all-targets --all-features --release -vv --target=aarch64-apple-darwin
- run: cargo check --workspace --all-targets --all-features --release -vv --target=riscv64gc-unknown-linux-gnu
- run: cargo check --workspace --all-targets --all-features --release -vv --target=arm-unknown-linux-gnueabihf
- run: cargo check --workspace --all-targets --all-features --release -vv --target=aarch64-linux-android
- run: cd cap-std && cargo check --features=fs_utf8 --release -vv --target=wasm32-wasip1
check_cross_nightly_windows:
name: Check Cross-Compilation on Rust nightly on Windows
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [nightly]
include:
- build: nightly
os: windows-latest
rust: nightly
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- run: >
rustup target add
x86_64-pc-windows-gnu
i686-pc-windows-msvc
i686-pc-windows-gnu
aarch64-pc-windows-msvc
- run: cargo check --workspace --all-targets --all-features --release -vv
- run: cargo check --workspace --all-targets --all-features --release -vv --target=x86_64-pc-windows-gnu
- run: cargo check --workspace --all-targets --all-features --release -vv --target=i686-pc-windows-msvc
- run: cargo check --workspace --all-targets --all-features --release -vv --target=i686-pc-windows-gnu
- run: cargo check --workspace --all-targets --all-features --release -vv --target=aarch64-pc-windows-msvc
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [stable, windows-latest, windows-2019, macos-latest, macos-12, beta, ubuntu-20.04, aarch64-ubuntu]
include:
- build: stable
os: ubuntu-latest
rust: stable
- build: windows-latest
os: windows-latest
rust: stable
- build: windows-2019
os: windows-2019
rust: stable
- build: macos-latest
os: macos-latest
rust: stable
- build: macos-12
os: macos-12
rust: stable
- build: beta
os: ubuntu-latest
rust: beta
- build: ubuntu-20.04
os: ubuntu-20.04
rust: stable
- build: aarch64-ubuntu
os: ubuntu-latest
rust: stable
target: aarch64-unknown-linux-gnu
gcc_package: gcc-aarch64-linux-gnu
gcc: aarch64-linux-gnu-gcc
qemu: qemu-aarch64 -L /usr/aarch64-linux-gnu
qemu_target: aarch64-linux-user
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- name: Install cross-compilation tools
run: |
set -ex
sudo apt-get update
sudo apt-get install -y ${{ matrix.gcc_package }} ninja-build
# Download and build qemu from source since the most recent release is
# way faster at arm emulation than the current version github actions'
# ubuntu image uses. Disable as much as we can to get it to build
# quickly.
curl https://download.qemu.org/qemu-6.1.0.tar.xz | tar xJf -
cd qemu-6.1.0
./configure --target-list=${{ matrix.qemu_target }} --prefix=$HOME/qemu --disable-tools --disable-slirp --disable-fdt --disable-capstone --disable-docs
make -j$(nproc) install
# Configure Cargo for cross compilation and tell it how it can run
# cross executables
upcase=$(echo ${{ matrix.target }} | awk '{ print toupper($0) }' | sed 's/-/_/g')
echo CARGO_TARGET_${upcase}_RUNNER=$HOME/qemu/bin/${{ matrix.qemu }} >> $GITHUB_ENV
echo CARGO_TARGET_${upcase}_LINKER=${{ matrix.gcc }} >> $GITHUB_ENV
if: matrix.qemu != '' && matrix.os == 'ubuntu-latest'
- name: Native testing
run: cargo test --features fs_utf8 --workspace
env:
RUST_BACKTRACE: 1
if: matrix.target == ''
- name: Cross testing
run: |
rustup target add ${{ matrix.target }}
cargo test --features fs_utf8 --workspace --target=${{ matrix.target }}
env:
RUST_BACKTRACE: 1
if: matrix.target != ''
test_nightly:
name: Test with Rust nightly
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [ubuntu, windows]
include:
- build: ubuntu
os: ubuntu-latest
rust: nightly
- build: windows
os: windows-latest
rust: nightly
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- run: cargo test --all-features --workspace
test_musl:
name: Test on Musl
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [ubuntu]
include:
- build: ubuntu
os: ubuntu-latest
rust: stable
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- name: Install musl-tools
run: |
set -ex
sudo apt-get update
sudo apt-get install -y musl-tools
- run: rustup target add x86_64-unknown-linux-musl
- run: cargo test --target x86_64-unknown-linux-musl --features fs_utf8 --workspace
test_linux_raw:
name: Test linux-raw support
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [ubuntu, ubuntu-20.04]
include:
- build: ubuntu
os: ubuntu-latest
rust: nightly
- build: ubuntu-20.04
os: ubuntu-20.04
rust: nightly
env:
RUSTFLAGS: --cfg linux_raw
RUSTDOCFLAGS: --cfg linux_raw
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
- run: cargo test --all-features --workspace
test_msrv:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [msrv]
include:
- build: msrv
os: ubuntu-latest
rust: 1.63
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: ${{ matrix.rust }}
# Don't use --all-features because some of the features have dependencies
# that don't work on newer Rust versions.
- run: cargo test --workspace --features=fs_utf8,arf_strings
env:
RUST_BACKTRACE: 1
fuzz_targets:
name: Fuzz Targets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/install-rust
with:
toolchain: nightly
- run: cargo install cargo-fuzz --vers "^0.11"
- run: cargo fetch
working-directory: ./fuzz
- run: cargo fuzz build --dev