Last week, the ISA SIG concluded two rebuilds of a snapshot of CentOS 9 Stream with GCC 12, one with -march=x86-64-v2 (same as CentOS 9 Stream), and one with -march=x86-64-v3.
The rebuilds are fairly complete. The following things are missing:
* All modular content. * LibreOffice and OpenJDK. * Two Rust packages which require a rebase of their bundled rust-bindgen versions for Clang 16 compatibility. (Rust currently does not follow the subarchitecture in CFLAGS anyway.)
I classifed most of the initial build failures, and here are some numbers:
GCC 12 induced failures GCC 12 exposes latent undefined behavior 2 various issues (mostly -Werror) 18 GCC 12 C++ header inclusion changes 3 subtotal 23 x86-64-v3 test differences 7 general buildroot/time/policy changes 19 grand total 49
(We switch to GCC 12 for auto-vectorization at -O2 using the very-cheap cost model, something that cannot be model with GCC 11 compiler flags. Without that, a forward-looking comparison between -march=x86-64-v2 and -march=x86-64-v3 is not possible.)
The x86-64-v3 test differences are mostly due to GCC's -ffp-contract=fast default, which does not match what some package test suites expect. We saw those on other architectures already, and with -march=x86-64-v3, GCC supports FMA, exposing them for the x86_64 architecture as well. Maybe upstream GCC can revisit the default there.
The general failures are in some cases literally due to time because test certificates expired, or a hard-coded date in some test is no longer in the future. Disabling SHA-1 broke some tests as well. The rest is just general drift of build dependencies, introducing incompatibilities. FTBFS bugs have been filed in Red Hat Bugzilla as appropriate.
We were able to eliminate a bunch of rebuild issues that are specific to the CBS Koji environment and do not show up in other environments. I should probably send out a separate note about that, in case other SIGs want to do mass rebuilds.
We are still working out how to best deliver the rebuilt packages for testing. Until then, the packages are available from the Koji buildroot and can be (mostly) installed with “dnf distro-sync” from an existing CentOS 9 Stream system:
https://cbs.centos.org/kojifiles/repos/isa9s-packages-baseline-el9sbase-build/latest/x86_64/ https://cbs.centos.org/kojifiles/repos/isa9s-packages-optimized-el9sopt-build/latest/x86_64
I would like to thank Troy Dawson for shepherding the build process and reviewing and fixing issues, and Brian Stinson for resolving CBS Koji infrastructure issues.
Florian