Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.

Commit f778935

Browse files
committed
Enable more targets on CI
This brings the targets tested here in line with those tested in `compiler-builtins`.
1 parent f4da894 commit f778935

File tree

2 files changed

+146
-42
lines changed

2 files changed

+146
-42
lines changed

.github/workflows/main.yml

Lines changed: 101 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,114 @@ name: CI
22
on: [push, pull_request]
33

44
env:
5+
CARGO_TERM_VERBOSE: true
56
RUSTDOCFLAGS: -Dwarnings
67
RUSTFLAGS: -Dwarnings
8+
RUST_BACKTRACE: full
79

810
jobs:
911
docker:
1012
name: Docker
11-
runs-on: ubuntu-latest
13+
timeout-minutes: 10
1214
strategy:
15+
fail-fast: false
1316
matrix:
14-
target:
15-
- aarch64-unknown-linux-gnu
16-
- arm-unknown-linux-gnueabi
17-
- arm-unknown-linux-gnueabihf
18-
- armv7-unknown-linux-gnueabihf
19-
# - i686-unknown-linux-gnu
20-
# MIPS targets disabled since they are dropped to tier 3.
21-
# See https://github.com/rust-lang/compiler-team/issues/648
22-
#- mips-unknown-linux-gnu
23-
#- mips64-unknown-linux-gnuabi64
24-
#- mips64el-unknown-linux-gnuabi64
25-
- powerpc-unknown-linux-gnu
26-
- powerpc64-unknown-linux-gnu
27-
- powerpc64le-unknown-linux-gnu
28-
- x86_64-unknown-linux-gnu
17+
include:
18+
- target: aarch64-apple-darwin
19+
os: macos-latest
20+
- target: aarch64-unknown-linux-gnu
21+
os: ubuntu-latest
22+
- target: aarch64-pc-windows-msvc
23+
os: windows-latest
24+
build_only: 1
25+
- target: arm-unknown-linux-gnueabi
26+
os: ubuntu-latest
27+
- target: arm-unknown-linux-gnueabihf
28+
os: ubuntu-latest
29+
- target: armv7-unknown-linux-gnueabihf
30+
os: ubuntu-latest
31+
- target: i586-unknown-linux-gnu
32+
os: ubuntu-latest
33+
- target: i686-unknown-linux-gnu
34+
os: ubuntu-latest
35+
- target: powerpc-unknown-linux-gnu
36+
os: ubuntu-latest
37+
- target: powerpc64-unknown-linux-gnu
38+
os: ubuntu-latest
39+
- target: powerpc64le-unknown-linux-gnu
40+
os: ubuntu-latest
41+
- target: riscv64gc-unknown-linux-gnu
42+
os: ubuntu-latest
43+
- target: thumbv6m-none-eabi
44+
os: ubuntu-latest
45+
- target: thumbv7em-none-eabi
46+
os: ubuntu-latest
47+
- target: thumbv7em-none-eabihf
48+
os: ubuntu-latest
49+
- target: thumbv7m-none-eabi
50+
os: ubuntu-latest
51+
- target: x86_64-unknown-linux-gnu
52+
os: ubuntu-latest
53+
- target: x86_64-apple-darwin
54+
os: macos-13
55+
- target: i686-pc-windows-msvc
56+
os: windows-latest
57+
- target: x86_64-pc-windows-msvc
58+
os: windows-latest
59+
- target: i686-pc-windows-gnu
60+
os: windows-latest
61+
channel: nightly-i686-gnu
62+
- target: x86_64-pc-windows-gnu
63+
os: windows-latest
64+
channel: nightly-x86_64-gnu
65+
runs-on: ${{ matrix.os }}
66+
env:
67+
BUILD_ONLY: ${{ matrix.build_only }}
2968
steps:
30-
- uses: actions/checkout@master
31-
- name: Install Rust
32-
run: rustup update nightly && rustup default nightly
33-
- run: rustup target add ${{ matrix.target }}
34-
- run: rustup target add x86_64-unknown-linux-musl
35-
- run: cargo generate-lockfile
36-
- run: ./ci/run-docker.sh ${{ matrix.target }}
69+
- name: Print runner information
70+
run: uname -a
71+
- uses: actions/checkout@v4
72+
- name: Install Rust (rustup)
73+
shell: bash
74+
run: |
75+
channel="nightly"
76+
# Account for channels that have required components (MinGW)
77+
[ -n "${{ matrix.channel }}" ] && channel="${{ matrix.channel }}"
78+
rustup update "$channel" --no-self-update
79+
rustup default "$channel"
80+
rustup target add ${{ matrix.target }}
81+
rustup component add llvm-tools-preview
82+
- uses: Swatinem/rust-cache@v2
83+
with:
84+
key: ${{ matrix.target }}
85+
86+
- name: Download musl source
87+
run: ./ci/download-musl.sh
88+
shell: bash
89+
90+
# Non-linux tests just use our raw script
91+
- name: Run locally
92+
if: matrix.os != 'ubuntu-latest'
93+
shell: bash
94+
run: ./ci/run.sh ${{ matrix.target }}
95+
96+
# Otherwise we use our docker containers to run builds
97+
- name: Run in Docker
98+
if: matrix.os == 'ubuntu-latest'
99+
run: |
100+
rustup target add x86_64-unknown-linux-musl
101+
cargo generate-lockfile && ./ci/run-docker.sh ${{ matrix.target }}
37102
38103
rustfmt:
39104
name: Rustfmt
40105
runs-on: ubuntu-latest
41106
steps:
42107
- uses: actions/checkout@master
43108
- name: Install Rust
44-
run: rustup update stable && rustup default stable && rustup component add rustfmt
109+
run: |
110+
rustup update stable --no-self-update
111+
rustup default stable
112+
rustup component add rustfmt
45113
- run: cargo fmt -- --check
46114

47115
wasm:
@@ -50,17 +118,19 @@ jobs:
50118
steps:
51119
- uses: actions/checkout@master
52120
- name: Install Rust
53-
run: rustup update nightly && rustup default nightly
121+
run: rustup update nightly --no-self-update && rustup default nightly
54122
- run: rustup target add wasm32-unknown-unknown
123+
- name: Download MUSL source
124+
run: ./ci/download-musl.sh
55125
- run: cargo build --target wasm32-unknown-unknown
56126

57-
cb:
127+
builtins:
58128
name: "The compiler-builtins crate works"
59129
runs-on: ubuntu-latest
60130
steps:
61131
- uses: actions/checkout@master
62132
- name: Install Rust
63-
run: rustup update nightly && rustup default nightly
133+
run: rustup update nightly --no-self-update && rustup default nightly
64134
- run: cargo build -p cb
65135

66136
benchmarks:
@@ -69,15 +139,17 @@ jobs:
69139
steps:
70140
- uses: actions/checkout@master
71141
- name: Install Rust
72-
run: rustup update nightly && rustup default nightly
142+
run: rustup update nightly --no-self-update && rustup default nightly
143+
- name: Download MUSL source
144+
run: ./ci/download-musl.sh
73145
- run: cargo bench --all
74146

75147
success:
76148
needs:
77149
- docker
78150
- rustfmt
79151
- wasm
80-
- cb
152+
- builtins
81153
- benchmarks
82154
runs-on: ubuntu-latest
83155
# GitHub branch protection is exceedingly silly and treats "jobs skipped because a dependency

ci/run.sh

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,53 @@
22

33
set -eux
44

5-
target="$1"
5+
export RUST_BACKTRACE="${RUST_BACKTRACE:-full}"
6+
# Needed for no-panic to correct detect a lack of panics
7+
export RUSTFLAGS="${RUSTFLAGS:-} -Ccodegen-units=1"
68

7-
cmd="cargo test --all --target $target"
9+
target="${1:-}"
810

9-
# Needed for no-panic to correct detect a lack of panics
10-
export RUSTFLAGS="$RUSTFLAGS -Ccodegen-units=1"
11+
if [ -z "$target" ]; then
12+
host_target=$(rustc -vV | awk '/^host/ { print $2 }')
13+
echo "Defaulted to host target $host_target"
14+
target="$host_target"
15+
fi
16+
17+
extra_flags=""
18+
19+
# We need to specifically skip tests for musl-math-sys on systems that can't
20+
# build musl since otherwise `--all` will activate it.
21+
case "$target" in
22+
*windows-msvc*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
23+
*wasm*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
24+
*thumb*) extra_flags="$extra_flags --exclude musl-math-sys" ;;
25+
esac
26+
27+
# FIXME: `STATUS_DLL_NOT_FOUND` testing macros on CI.
28+
# <https://github.com/rust-lang/rust/issues/128944>
29+
case "$target" in
30+
*windows-gnu) extra_flags="$extra_flags --exclude libm-macros" ;;
31+
esac
32+
33+
if [ "$(uname -a)" = "Linux" ]; then
34+
# also run the reference tests when we can. requires a Linux host.
35+
extra_flags="$extra_flags --features libm-test/musl-bitwise-tests"
36+
fi
37+
38+
if [ "${BUILD_ONLY:-}" = "1" ]; then
39+
cmd="cargo build --target $target --package libm"
40+
$cmd
41+
$cmd --features 'unstable'
1142

12-
# stable by default
13-
$cmd
14-
$cmd --release
43+
echo "no tests to run for no_std"
44+
else
45+
cmd="cargo test --all --target $target $extra_flags"
1546

16-
# unstable with a feature
17-
$cmd --features 'unstable'
18-
$cmd --release --features 'unstable'
47+
# stable by default
48+
$cmd
49+
$cmd --release
1950

20-
# also run the reference tests
21-
$cmd --features 'unstable libm-test/musl-bitwise-tests'
22-
$cmd --release --features 'unstable libm-test/musl-bitwise-tests'
51+
# unstable with a feature
52+
$cmd --features 'unstable'
53+
$cmd --release --features 'unstable'
54+
fi

0 commit comments

Comments
 (0)