[CentOS-devel] ISA SIG rebuild status

Wed Jun 28 13:09:37 UTC 2023
Florian Weimer <fweimer at redhat.com>

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