Support zstd-compressed ELF sections. #1116
Workflow file for this run
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: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 | |
rust: stable | |
- os: ubuntu-20.04 | |
rust: beta | |
- os: ubuntu-20.04 | |
rust: nightly | |
- os: ubuntu-24.04 | |
rust: stable | |
- os: ubuntu-24.04 | |
rust: beta | |
- os: ubuntu-24.04 | |
rust: nightly | |
- os: macos-latest | |
rust: stable | |
- os: macos-latest | |
rust: nightly | |
- os: windows-latest | |
rust: stable-x86_64-msvc | |
- os: windows-latest | |
rust: stable-i686-msvc | |
- os: windows-latest | |
rust: stable-x86_64-gnu | |
- os: windows-latest | |
rust: nightly-x86_64-msvc | |
- os: windows-latest | |
rust: nightly-i686-msvc | |
- os: windows-latest | |
rust: nightly-x86_64-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust (rustup) | |
run: rustup update ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} | |
shell: bash | |
- run: echo RUSTFLAGS=-Dwarnings >> $GITHUB_ENV | |
shell: bash | |
# full fidelity of backtraces on 32-bit msvc requires frame pointers, so | |
# enable that for our tests | |
- name: Force frame pointers | |
run: echo RUSTFLAGS="-Cforce-frame-pointers $RUSTFLAGS" >> $GITHUB_ENV | |
shell: bash | |
if: contains(matrix.rust, 'i686') | |
# Starting with Ubuntu 22.04 libc6-dbg is needed. | |
- name: Install libc debug info | |
run: sudo apt-get install -y libc6-dbg | |
shell: bash | |
if: contains(matrix.os, 'ubuntu-24.04') | |
- name: Enable collapse_debuginfo based on version | |
run: echo RUSTFLAGS="--cfg dbginfo=\"collapsible\" $RUSTFLAGS" >> $GITHUB_ENV | |
shell: bash | |
if: contains(matrix.rust, 'nightly') || contains(matrix.rust, 'beta') | |
- run: cargo build | |
- run: cargo test | |
- run: cargo test --features "serialize-serde" | |
- run: cargo test --features "cpp_demangle" | |
- run: cargo test --no-default-features | |
- run: cargo test --no-default-features --features "std" | |
- run: cargo test --manifest-path crates/cpp_smoke_test/Cargo.toml | |
# This test is specifically about packed debuginfo with `*.dSYM` files | |
- run: cargo test --manifest-path crates/macos_frames_test/Cargo.toml | |
env: | |
CARGO_PROFILE_DEV_SPLIT_DEBUGINFO: packed | |
CARGO_PROFILE_TEST_SPLIT_DEBUGINFO: packed | |
- run: cargo test --manifest-path crates/without_debuginfo/Cargo.toml | |
- run: cargo test --manifest-path crates/line-tables-only/Cargo.toml | |
# Test debuginfo compression still works | |
- run: cargo test | |
if: contains(matrix.os, 'ubuntu') | |
env: | |
RUSTFLAGS: "-C link-arg=-Wl,--compress-debug-sections=zlib" | |
- run: cargo test | |
if: contains(matrix.os, 'ubuntu-24.04') || contains(matrix.rust, 'nightly') | |
env: | |
RUSTFLAGS: "-C link-arg=-Wl,--compress-debug-sections=zstd" | |
# Test that, on macOS, packed/unpacked debuginfo both work | |
- run: cargo clean && cargo test | |
# Test that, on macOS, packed/unpacked debuginfo both work | |
if: matrix.os == 'macos-latest' | |
env: | |
CARGO_PROFILE_DEV_SPLIT_DEBUGINFO: unpacked | |
CARGO_PROFILE_TEST_SPLIT_DEBUGINFO: unpacked | |
- run: cargo clean && cargo test | |
if: matrix.os == 'macos-latest' | |
env: | |
CARGO_PROFILE_DEV_SPLIT_DEBUGINFO: packed | |
CARGO_PROFILE_TEST_SPLIT_DEBUGINFO: packed | |
# Test that, on macOS, binaries with no UUID work | |
- run: cargo clean && cargo test | |
if: matrix.os == 'macos-latest' | |
env: | |
RUSTFLAGS: "-C link-arg=-Wl,-no_uuid" | |
# Test that, on Linux, packed/unpacked debuginfo both work | |
- run: cargo clean && cargo test | |
if: matrix.rust == 'nightly' | |
env: | |
RUSTFLAGS: "-C split-debuginfo=unpacked -Zunstable-options" | |
- run: cargo clean && cargo test | |
if: matrix.rust == 'nightly' | |
env: | |
RUSTFLAGS: "-C split-debuginfo=packed -Zunstable-options" | |
# Test that separate debug info works | |
- run: ./ci/debuglink-docker.sh | |
if: contains(matrix.os, 'ubuntu') | |
# Test that backtraces are still symbolicated if we don't embed an absolute | |
# path to the PDB file in the binary. | |
# Add -Cforce-frame-pointers for stability. The test otherwise fails | |
# non-deterministically on i686-pc-windows-msvc because the stack cannot be | |
# unwound reliably. This failure is not related to the feature being tested. | |
- run: cargo clean && cargo test | |
if: contains(matrix.rust, 'msvc') | |
name: "Test that backtraces are symbolicated without absolute PDB path" | |
env: | |
RUSTFLAGS: "-Clink-arg=/PDBALTPATH:%_PDB% -Cforce-frame-pointers" | |
# Test that including as a submodule will still work, both with and without | |
# the `backtrace` feature enabled. | |
- run: cargo build --manifest-path crates/as-if-std/Cargo.toml | |
- run: cargo build --manifest-path crates/as-if-std/Cargo.toml --no-default-features | |
windows_arm64: | |
name: Windows AArch64 | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
shell: bash | |
- run: echo RUSTFLAGS=-Dwarnings >> $GITHUB_ENV | |
shell: bash | |
- run: rustup target add aarch64-pc-windows-msvc | |
- run: cargo test --no-run --target aarch64-pc-windows-msvc | |
ios: | |
name: iOS | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
include: | |
- target: aarch64-apple-ios | |
sdk: iphoneos | |
- target: x86_64-apple-ios | |
sdk: iphonesimulator | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: rustup target add ${{ matrix.target }} | |
- run: | | |
export RUSTFLAGS=-Dwarnings | |
export SDK_PATH=`xcrun --show-sdk-path --sdk ${{ matrix.sdk }}` | |
export RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$SDK_PATH" | |
cargo test --no-run --target ${{ matrix.target }} | |
name: Build tests | |
docker: | |
name: Docker | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- aarch64-unknown-linux-gnu | |
- arm-unknown-linux-gnueabihf | |
- armv7-unknown-linux-gnueabihf | |
- i586-unknown-linux-gnu | |
- i686-unknown-linux-gnu | |
- powerpc64-unknown-linux-gnu | |
- s390x-unknown-linux-gnu | |
- x86_64-pc-windows-gnu | |
- x86_64-unknown-linux-gnu | |
- x86_64-unknown-linux-musl | |
- arm-linux-androideabi | |
- armv7-linux-androideabi | |
- aarch64-linux-android | |
- i686-linux-android | |
- x86_64-linux-android | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- run: rustup target add ${{ matrix.target }} | |
- run: cargo generate-lockfile | |
- run: echo RUSTFLAGS=-Dwarnings >> $GITHUB_ENV | |
shell: bash | |
- run: ./ci/run-docker.sh ${{ matrix.target }} | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust | |
run: rustup update stable --no-self-update && rustup default stable && rustup component add rustfmt | |
- run: cargo fmt --all -- --check | |
build: | |
name: Build Targets | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- wasm32-wasi | |
- x86_64-unknown-fuchsia | |
- x86_64-fortanix-unknown-sgx | |
- x86_64-unknown-illumos | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust | |
run: rustup update nightly --no-self-update && rustup default nightly | |
- run: rustup target add ${{ matrix.target }} | |
- run: echo RUSTFLAGS=-Dwarnings >> $GITHUB_ENV | |
shell: bash | |
- run: cargo build --target ${{ matrix.target }} | |
- run: cargo build --manifest-path crates/as-if-std/Cargo.toml --target ${{ matrix.target }} | |
msrv: | |
name: MSRV | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 | |
- os: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Rust | |
run: rustup update 1.65.0 --no-self-update && rustup default 1.65.0 | |
- run: cargo build | |
miri: | |
name: Miri | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Miri | |
run: | | |
rustup toolchain install nightly --component miri | |
rustup override set nightly | |
cargo miri setup | |
- run: MIRIFLAGS="-Zmiri-disable-isolation" cargo miri test |