Optimize metadata
calls on Linux. (#367)
#1708
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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-wasi | |
- 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-wasi | |
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@v3 | |
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-11 | |
os: macos-11 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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 |