Skip to content

Commit 5402694

Browse files
committed
Upgrade CI qemu cpu versions
+ Enable `fail-fast` temporarily for easier debugging
1 parent f66fa11 commit 5402694

File tree

14 files changed

+53
-27
lines changed

14 files changed

+53
-27
lines changed

.github/workflows/main.yml

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ jobs:
4040
name: Test
4141
runs-on: ${{ matrix.target.os }}
4242
strategy:
43+
fail-fast: false
4344
matrix:
4445
profile:
4546
- dev

ci/docker/aarch64-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1414
lld
1515

1616
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
17-
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu" \
18-
OBJDUMP=aarch64-linux-gnu-objdump
17+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -cpu max -L /usr/aarch64-linux-gnu" \
18+
OBJDUMP=aarch64-linux-gnu-objdump \
19+
SKIP_TESTS=tme

ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ ENV AARCH64_BE_TOOLCHAIN="/toolchains/${TOOLCHAIN}"
2525
ENV AARCH64_BE_LIBC="${AARCH64_BE_TOOLCHAIN}/aarch64_be-none-linux-gnu/libc"
2626

2727
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_LINKER="${AARCH64_BE_TOOLCHAIN}/bin/aarch64_be-none-linux-gnu-gcc"
28-
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64_be -L ${AARCH64_BE_LIBC}"
28+
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64_be -cpu max -L ${AARCH64_BE_LIBC}"
2929
ENV OBJDUMP="${AARCH64_BE_TOOLCHAIN}/bin/bin/aarch64-none-linux-gnu-objdump"
30+
ENV SKIP_TESTS=tme

ci/docker/arm-unknown-linux-gnueabihf/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
99
make \
1010
file
1111
ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
12-
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
12+
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
1313
OBJDUMP=arm-linux-gnueabihf-objdump

ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1313
clang-19 \
1414
lld
1515
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
16-
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
16+
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
1717
OBJDUMP=arm-linux-gnueabihf-objdump

ci/docker/loongarch64-unknown-linux-gnu/Dockerfile

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ FROM ubuntu:25.04
22

33
RUN apt-get update && \
44
apt-get install -y --no-install-recommends \
5-
gcc libc6-dev qemu-user-static ca-certificates \
5+
gcc libc6-dev qemu-user ca-certificates \
66
gcc-14-loongarch64-linux-gnu libc6-dev-loong64-cross
77

88

99
ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc-14 \
10-
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-loongarch64-static -L /usr/loongarch64-linux-gnu" \
11-
OBJDUMP=loongarch64-linux-gnu-objdump
10+
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-loongarch64 -cpu max -L /usr/loongarch64-linux-gnu" \
11+
OBJDUMP=loongarch64-linux-gnu-objdump \
12+
SKIP_TESTS=frecipe

ci/docker/powerpc-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
qemu-system-ppc make file
77

88
ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
9-
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu Vger -L /usr/powerpc-linux-gnu" \
9+
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu apollo7 -L /usr/powerpc-linux-gnu" \
1010
CC=powerpc-linux-gnu-gcc \
11-
OBJDUMP=powerpc-linux-gnu-objdump
11+
OBJDUMP=powerpc-linux-gnu-objdump \
12+
SKIP_TESTS=vsx

ci/docker/powerpc64-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
file make
77

88
ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \
9-
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -cpu power10 -L /usr/powerpc64-linux-gnu" \
9+
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -cpu power11 -L /usr/powerpc64-linux-gnu" \
1010
CC=powerpc64-linux-gnu-gcc \
11-
OBJDUMP=powerpc64-linux-gnu-objdump
11+
OBJDUMP=powerpc64-linux-gnu-objdump \
12+
SKIP_TESTS=vsx

ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
77

88
# Work around qemu triggering a sigill on vec_subs if the cpu target is not defined.
99
ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc \
10-
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -cpu power10 -L /usr/powerpc64le-linux-gnu" \
10+
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -cpu power11 -L /usr/powerpc64le-linux-gnu" \
1111
CC=powerpc64le-linux-gnu-gcc \
12-
OBJDUMP=powerpc64le-linux-gnu-objdump
12+
OBJDUMP=powerpc64le-linux-gnu-objdump \
13+
SKIP_TESTS=vsx

ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
llvm
77

88
ENV CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc \
9-
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv64 \
10-
-L /usr/riscv64-linux-gnu \
11-
-cpu rv64,zk=true,zks=true,zbb=true,zbc=true \
12-
" \
9+
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv64 -cpu max -L /usr/riscv64-linux-gnu" \
1310
OBJDUMP=llvm-objdump

ci/docker/s390x-unknown-linux-gnu/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1010
file
1111

1212
ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \
13-
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -L /usr/s390x-linux-gnu" \
13+
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -cpu gen14a -L /usr/s390x-linux-gnu" \
1414
OBJDUMP=s390x-linux-gnu-objdump

ci/run.sh

+1-3
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,7 @@ case ${TARGET} in
131131
export RUSTFLAGS="${RUSTFLAGS} -C target-feature=+vector-enhancements-1"
132132
cargo_test "${PROFILE}"
133133
;;
134-
powerpc64*)
135-
# We don't build the ppc 32-bit targets with these - these targets
136-
# are mostly unsupported for now.
134+
powerpc*)
137135
OLD_RUSTFLAGS="${RUSTFLAGS}"
138136
export RUSTFLAGS="${OLD_RUSTFLAGS} -C target-feature=+altivec"
139137
cargo_test "${PROFILE}"

crates/std_detect/src/detect/arch/riscv.rs

+4
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,19 @@ features! {
8989

9090
@FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] rv32i: "rv32i";
9191
without cfg check: true;
92+
ignore in tests: true;
9293
/// RV32I Base Integer Instruction Set
9394
@FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] rv32e: "rv32e";
9495
without cfg check: true;
96+
ignore in tests: true;
9597
/// RV32E Base Integer Instruction Set
9698
@FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] rv64i: "rv64i";
9799
without cfg check: true;
100+
ignore in tests: true;
98101
/// RV64I Base Integer Instruction Set
99102
@FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] rv128i: "rv128i";
100103
without cfg check: true;
104+
ignore in tests: true;
101105
/// RV128I Base Integer Instruction Set
102106
103107
@FEATURE: #[unstable(feature = "stdarch_riscv_feature_detection", issue = "111192")] zicsr: "zicsr";

crates/std_detect/src/detect/macros.rs

+25-5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,20 @@ macro_rules! check_cfg_feature {
2828
};
2929
}
3030

31+
#[allow(unused_macros, reason = "it's used in the features! macro below")]
32+
macro_rules! detect_feature_direct {
33+
($feature:tt, $feature_lit:tt) => {
34+
detect_feature_direct!($feature, $feature_lit : $feature_lit)
35+
};
36+
($feature:tt, $feature_lit:tt : $($target_feature_lit:tt),*) => {
37+
$(cfg!(target_feature = $target_feature_lit) ||)*
38+
$crate::detect::check_for($crate::detect::Feature::$feature)
39+
};
40+
($feature:tt, $feature_lit:tt, without cfg check: true) => {
41+
$crate::detect::check_for($crate::detect::Feature::$feature)
42+
};
43+
}
44+
3145
#[allow(unused)]
3246
macro_rules! features {
3347
(
@@ -40,6 +54,7 @@ macro_rules! features {
4054
$(@FEATURE: #[$stability_attr:meta] $feature:ident: $feature_lit:tt;
4155
$(without cfg check: $feature_cfg_check:tt;)?
4256
$(implied by target_features: [$($target_feature_lit:tt),*];)?
57+
$(ignore in tests: $ignore_in_tests:tt;)?
4358
$(#[$feature_comment:meta])*)*
4459
) => {
4560
#[macro_export]
@@ -141,14 +156,19 @@ macro_rules! features {
141156
}
142157

143158
#[test]
144-
#[cfg($cfg)]
145-
#[cfg(stdarch_test_everything)]
159+
#[cfg(all(stdarch_test_everything, $cfg))]
146160
fn everything_present() {
161+
#[allow(unused_mut)]
162+
let mut any_failed = false;
147163
$(
148-
assert!($crate::detect::check_for($crate::detect::Feature::$feature),
149-
concat!("Feature ", $feature_lit, " is not present on this target")
150-
);
164+
if $(!$ignore_in_tests &&)? !detect_feature_direct!($feature, $feature_lit $(, without cfg check: $feature_cfg_check)? $(: $($target_feature_lit),*)?) {
165+
any_failed = true;
166+
eprintln!("`{}` not available", $feature_lit);
167+
}
151168
)*
169+
if any_failed {
170+
panic!("Some features are not present on this `TEST_EVERYTHING` target");
171+
}
152172
}
153173

154174
/// Each variant denotes a position in a bitset for a particular feature.

0 commit comments

Comments
 (0)