This must be old hat to Gentoo and Debian users, but I have
been able to progressively upgrade a stock RedHat 7.3 installation
to gcc-3.3.3, while retaining the glibc-2.2.5 library.
Why do this?
1) Because I can.
2) Because RedHat 7.3 is rock stable, reliable and works great out of
the box; but I wanted to be able to take advantage of the libstdc++3
ABI and compile recent source rpms without patching.
3) Because if you upgrade from 7.3 to 9/FC1/FC2 using the standard upgrade
installation, you will end up with a system that is slower and less
reliable than what you already have with RedHat 7.3. I'd blame this on
a lot of things, including glibc-2.3, XFree86-4.3, etc.
The toolchain and key source rpms are:
gcc-3.3.3-1 (from trilithium.com; more below)
glibc-2.2.5-45 (patched version of RedHat glibc-2.2.5-44)
XFree86-4.2.1-24 (patched version of RedHat XFree86-4.2.1-13.73.23)
and many more. All the source rpms are stock RedHat SRPMs from RH7.3, 8.0,
9, AS2.1, EL3, FC1 or FC2, with the exception of glibc and Xfree86, which
have trivial patches; and gcc-3.3.3-1.
gcc-3.3.3-1: Use the one from trilithium.com instead of the RedHat SRPMs,
which are heavily patched and have unnecessary dependancies.
glibc-2.2.5-44: Will not compile cleanly with gcc-3.3.3, but the fixes
are entirely syntax related. Replace all instances of __thread with
__thrd, for instance. Patchset is available with me, I'll post it on
XFree86-4.2.1-13.73.23: Again, will not compile cleanly with gcc-3.3.3. The
simplest fix is to remove ttmkfdir from XFree86 and build it as a separate
RPM; this only requires changes to the spec file, available with me.
The crucial step to be able to perform this upgrade cleanly is the bootstrap
step for gcc-3.3.3. For this, you will need the compat-gcc-2.96... source
rpm from RedHat 8, and precompiled gcc-3.3.3-1 and cpp-3.3.3-1 rpms from
trilithium.com. You may need to do 2 or 3 bootstrap builds of gcc-3.3.3-1
from the source rpm to get rid of dependancies on compat-libstdc++-2.96.
Once there, attempt to remove compat-libstdc++. You may find dozens of
RPM dependancies from legacy RedHat 7.3 packages. Use your judgement;
remove some and rebuild the others that you require from appropriate
source RPMs. For instance, I got rid of tetex and all its dependancies;
but rebuilt a lot of xml-related stuff from recent source rpms. XFree86
will need to be patched (as mentioned above) and bootstrapped twice
to get rid of a dependancy on compat-libstdc++-2.96.
Once you've got rid of compat-libstdc++, you're home free. Just keep
rebuilding SRPMs from recent RedHat releases as necessary - my own
favorite is RHEL3 or White Box Enterprise Linux. Update dependancies
The end-point is rock-stable RedHat installation that has all the
performance advantages of gcc-3.x, combined with the reliability of
glibc-2.2.5. To date, there isn't a single issue with the setup.
Since RHEL3 is assured of support until 2008, there will be stable
SRPMs available for this setup at least until then.