Fedora glibc team,
In the "Platform Interface" document [1] I talk about a
distribution in which there is a distinction between what you run
against and what you compile against.
I had originally designed a new sysroot-glibc package which would
be installed by default, and all applications would compile against
that. However, in hindsight this is backwards to what users want.
They key benefit I wanted was a bullet-proof way to avoid ABI
breaks by using tooling. This would also help lower the bar for
less senior developers contributing without the fear they would
break the ABI.
Consensus is that the normal day-to-day compilation against
libraries like glibc should *not* change, and it should remain the
normal process. Only users that want the newer glibc should have to
add things to their build flags to link with a newer glibc. Likewise
the newer glibc should be deployed as either a distinct package
or in a distinct repository with the required packaging changes
(provides all of it's interfaces in a sysroot, and a replacement
runtime). If you are going to use the new glibc for compiling against
then you must also install the new glibc for runtime. That is to say
we support upgrading the development environment, but we do not
support distinct cross-compilation (difficult to do without a lot
of coordination on --prefix=/usr installed runtime data like locales,
caches, etc).
Therefore since I plan to retain a system glibc default installation
that installation could benefit from more robust ABI checking, like
we *would* have had if we compiled against a sysroot for the system
glibc.
The following two patches do just that.
Patch 1/2 cleans up the glibc %install phase.
Patch 2/2 introduces a process to record the ABI for all shared
libraries, and then use that frozen ABI record to verify the ABI
in great detail.
This ABI checking is beyond what glibc does with *.abilist checking,
and closer to what distributions are doing with their package release
process (not yet standardized). Perhaps we will move this upstream
one day when we've had more experience with it in Fedora.
We currently rely on libabigail for ABI serialization.
--
Cheers,
Carlos.
[1]
https://fedoraproject.org/wiki/PlatformInterface