Enable more targets on CI
This brings the targets tested here in line with those tested in `compiler-builtins`.
This commit is contained in:
parent
ee131ffa47
commit
f5d30ecc3b
3 changed files with 152 additions and 41 deletions
|
|
@ -2,38 +2,103 @@ name: CI
|
|||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
CARGO_TERM_VERBOSE: true
|
||||
RUSTDOCFLAGS: -Dwarnings
|
||||
RUSTFLAGS: -Dwarnings
|
||||
RUST_BACKTRACE: full
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
test:
|
||||
name: Docker
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- aarch64-unknown-linux-gnu
|
||||
- arm-unknown-linux-gnueabi
|
||||
- arm-unknown-linux-gnueabihf
|
||||
- armv7-unknown-linux-gnueabihf
|
||||
# - i686-unknown-linux-gnu
|
||||
# MIPS targets disabled since they are dropped to tier 3.
|
||||
# See https://github.com/rust-lang/compiler-team/issues/648
|
||||
#- mips-unknown-linux-gnu
|
||||
#- mips64-unknown-linux-gnuabi64
|
||||
#- mips64el-unknown-linux-gnuabi64
|
||||
- powerpc-unknown-linux-gnu
|
||||
- powerpc64-unknown-linux-gnu
|
||||
- powerpc64le-unknown-linux-gnu
|
||||
- x86_64-unknown-linux-gnu
|
||||
include:
|
||||
- target: aarch64-apple-darwin
|
||||
os: macos-latest
|
||||
- target: aarch64-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: aarch64-pc-windows-msvc
|
||||
os: windows-latest
|
||||
build_only: 1 # Can't run on x86 hosts
|
||||
- target: arm-unknown-linux-gnueabi
|
||||
os: ubuntu-latest
|
||||
- target: arm-unknown-linux-gnueabihf
|
||||
os: ubuntu-latest
|
||||
- target: armv7-unknown-linux-gnueabihf
|
||||
os: ubuntu-latest
|
||||
- target: i586-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: i686-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: powerpc-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: powerpc64-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: powerpc64le-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: riscv64gc-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: thumbv6m-none-eabi
|
||||
os: ubuntu-latest
|
||||
- target: thumbv7em-none-eabi
|
||||
os: ubuntu-latest
|
||||
- target: thumbv7em-none-eabihf
|
||||
os: ubuntu-latest
|
||||
- target: thumbv7m-none-eabi
|
||||
os: ubuntu-latest
|
||||
- target: x86_64-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
- target: x86_64-apple-darwin
|
||||
os: macos-13
|
||||
- target: i686-pc-windows-msvc
|
||||
os: windows-latest
|
||||
- target: x86_64-pc-windows-msvc
|
||||
os: windows-latest
|
||||
- target: i686-pc-windows-gnu
|
||||
os: windows-latest
|
||||
channel: nightly-i686-gnu
|
||||
- target: x86_64-pc-windows-gnu
|
||||
os: windows-latest
|
||||
channel: nightly-x86_64-gnu
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
BUILD_ONLY: ${{ matrix.build_only }}
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Install Rust
|
||||
run: rustup update nightly --no-self-update && rustup default nightly
|
||||
- run: rustup target add ${{ matrix.target }}
|
||||
- run: rustup target add x86_64-unknown-linux-musl
|
||||
- run: cargo generate-lockfile
|
||||
- run: ./ci/run-docker.sh ${{ matrix.target }}
|
||||
- name: Print runner information
|
||||
run: uname -a
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Rust (rustup)
|
||||
shell: bash
|
||||
run: |
|
||||
channel="nightly"
|
||||
# Account for channels that have required components (MinGW)
|
||||
[ -n "${{ matrix.channel }}" ] && channel="${{ matrix.channel }}"
|
||||
rustup update "$channel" --no-self-update
|
||||
rustup default "$channel"
|
||||
rustup target add ${{ matrix.target }}
|
||||
rustup component add llvm-tools-preview
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
key: ${{ matrix.target }}
|
||||
|
||||
- name: Download musl source
|
||||
run: ./ci/download-musl.sh
|
||||
shell: bash
|
||||
|
||||
# Non-linux tests just use our raw script
|
||||
- name: Run locally
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
shell: bash
|
||||
run: ./ci/run.sh ${{ matrix.target }}
|
||||
|
||||
# Otherwise we use our docker containers to run builds
|
||||
- name: Run in Docker
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
rustup target add x86_64-unknown-linux-musl
|
||||
cargo generate-lockfile && ./ci/run-docker.sh ${{ matrix.target }}
|
||||
|
||||
wasm:
|
||||
name: WebAssembly
|
||||
|
|
@ -45,7 +110,7 @@ jobs:
|
|||
- run: rustup target add wasm32-unknown-unknown
|
||||
- run: cargo build --target wasm32-unknown-unknown
|
||||
|
||||
cb:
|
||||
builtins:
|
||||
name: "The compiler-builtins crate works"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
|
@ -61,6 +126,8 @@ jobs:
|
|||
- uses: actions/checkout@master
|
||||
- name: Install Rust
|
||||
run: rustup update nightly --no-self-update && rustup default nightly
|
||||
- name: Download musl source
|
||||
run: ./ci/download-musl.sh
|
||||
- run: cargo bench --all
|
||||
|
||||
msrv:
|
||||
|
|
@ -92,9 +159,9 @@ jobs:
|
|||
|
||||
success:
|
||||
needs:
|
||||
- docker
|
||||
- test
|
||||
- wasm
|
||||
- cb
|
||||
- builtins
|
||||
- benchmarks
|
||||
- msrv
|
||||
- rustfmt
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ run() {
|
|||
-e RUSTFLAGS \
|
||||
-e CARGO_HOME=/cargo \
|
||||
-e CARGO_TARGET_DIR=/target \
|
||||
-e EMULATED=1 \
|
||||
-v "${HOME}/.cargo:/cargo" \
|
||||
-v "$(pwd)/target:/target" \
|
||||
-v "$(pwd):/checkout:ro" \
|
||||
|
|
|
|||
|
|
@ -2,21 +2,64 @@
|
|||
|
||||
set -eux
|
||||
|
||||
target="$1"
|
||||
|
||||
cmd="cargo test --all --target $target"
|
||||
|
||||
export RUST_BACKTRACE="${RUST_BACKTRACE:-full}"
|
||||
# Needed for no-panic to correct detect a lack of panics
|
||||
export RUSTFLAGS="$RUSTFLAGS -Ccodegen-units=1"
|
||||
export RUSTFLAGS="${RUSTFLAGS:-} -Ccodegen-units=1"
|
||||
|
||||
# stable by default
|
||||
$cmd
|
||||
$cmd --release
|
||||
target="${1:-}"
|
||||
|
||||
# unstable with a feature
|
||||
$cmd --features 'unstable'
|
||||
$cmd --release --features 'unstable'
|
||||
if [ -z "$target" ]; then
|
||||
host_target=$(rustc -vV | awk '/^host/ { print $2 }')
|
||||
echo "Defaulted to host target $host_target"
|
||||
target="$host_target"
|
||||
fi
|
||||
|
||||
# also run the reference tests
|
||||
$cmd --features 'unstable libm-test/test-musl-serialized'
|
||||
$cmd --release --features 'unstable libm-test/test-musl-serialized'
|
||||
extra_flags=""
|
||||
|
||||
# We need to specifically skip tests for musl-math-sys on systems that can't
|
||||
# build musl since otherwise `--all` will activate it.
|
||||
case "$target" in
|
||||
# Can't build at all on MSVC, WASM, or thumb
|
||||
*windows-msvc*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
|
||||
*wasm*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
|
||||
*thumb*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
|
||||
|
||||
# We can build musl on MinGW but running tests gets a stack overflow
|
||||
*windows-gnu*) ;;
|
||||
# FIXME(#309): LE PPC crashes calling the musl version of some functions. It
|
||||
# seems like a qemu bug but should be investigated further at some point.
|
||||
# See <https://github.com/rust-lang/libm/issues/309>.
|
||||
*powerpc64le*) ;;
|
||||
|
||||
# Everything else gets musl enabled
|
||||
*) extra_flags="$extra_flags --features libm-test/build-musl" ;;
|
||||
esac
|
||||
|
||||
# FIXME: `STATUS_DLL_NOT_FOUND` testing macros on CI.
|
||||
# <https://github.com/rust-lang/rust/issues/128944>
|
||||
case "$target" in
|
||||
*windows-gnu) extra_flags="$extra_flags --exclude libm-macros" ;;
|
||||
esac
|
||||
|
||||
if [ "$(uname -a)" = "Linux" ]; then
|
||||
# also run the reference tests when we can. requires a Linux host.
|
||||
extra_flags="$extra_flags --features libm-test/test-musl-serialized"
|
||||
fi
|
||||
|
||||
if [ "${BUILD_ONLY:-}" = "1" ]; then
|
||||
cmd="cargo build --target $target --package libm"
|
||||
$cmd
|
||||
$cmd --features 'unstable'
|
||||
|
||||
echo "can't run tests on $target"
|
||||
else
|
||||
cmd="cargo test --all --target $target $extra_flags"
|
||||
|
||||
# stable by default
|
||||
$cmd
|
||||
$cmd --release
|
||||
|
||||
# unstable with a feature
|
||||
$cmd --features 'unstable'
|
||||
$cmd --release --features 'unstable'
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue