Commit 8aeb413
ci: use
The default `cross` images shipped with `cross 0.2.5` (2022) carry
pre-C++17 g++ toolchains, which can't compile the upgraded BoringSSL
(it needs C++17 headers like `<string_view>`). Override them with
`cross`'s `edge` images, which are rebuilt regularly from cross's
`main` branch and carry a current toolchain.
The `edge` image for `i686-unknown-linux-gnu` is set up differently
from the others: it's a 32-bit-native userspace shipping only the
unprefixed `gcc`/`g++` toolchain, missing some of the 32-bit dev
libraries needed by `cmake`'s compiler-detection probe, and lacks
the cross-prefixed binary names that `cross` and `cc-rs` expect.
Add a `pre-build` step to install `libc6-dev-i386 g++-multilib` and
to symlink `i686-linux-gnu-gcc`/`-g++` to the unprefixed
compilers.
Separately, BoringSSL's x86 assembly requires SSE2. The 32-bit
toolchain file sets `-msse2`, but cmake-rs passes
`-DCMAKE_C_FLAGS=...` on the command line which wins over the
toolchain file's CACHE STRING, leaving SSE2 unset in the actual build
flags. Add `-msse2` (and `-mfpmath=sse`) for the x86 build path in
`build.rs` so they make it into the final flags regardless.
An earlier attempt switched the multiarch CI job from `cross` to
native apt cross-toolchains plus `qemu-user-static`. That approach
worked but `qemu-user-static` introduced enough nondeterminism in
microsecond-level timing that several BBR2-parameterized byte-count
assertions started flaking on aarch64 and armv7 across different runs
of the same code. `cross`'s Docker+QEMU setup is deterministic
enough in practice to keep those tests stable, so we keep using
`cross` and address its toolchain age via `Cross.toml`.cross's edge images for multiarch test runs1 parent f2fcea4 commit 8aeb413
2 files changed
Lines changed: 39 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
152 | 162 | | |
153 | 163 | | |
154 | 164 | | |
| |||
0 commit comments