| Summary: | Gentoo Linux GCC Upgrade Guide: procedure lacks a step (libstdc++-v3) | ||
|---|---|---|---|
| Product: | [OLD] Docs-user | Reporter: | Christian Andreetta (RETIRED) <satya> |
| Component: | Other | Assignee: | Docs Team <docs-team> |
| Status: | RESOLVED INVALID | ||
| Severity: | critical | CC: | gcc-porting |
| Priority: | High | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | Linux | ||
| URL: | http://www.gentoo.org/doc/en/gcc-upgrading.xml | ||
| Whiteboard: | |||
| Package list: | Runtime testing required: | --- | |
If you still have gcc-3.3 installed, you don't need libstdc++ _at all_. I guess a call to ldconfig should be thrown in there to update the cache. If you follow the directions, python should not be linked to libstdc++.so.5, but ld.so.cache won't be updated after libstdc++-v3 is merged, so there _could_ be some breakage I guess. Portage should call env_update() at the end of every merge() or unmerge(), at least that's what I've read from the sources. env_update() should call `ldconfig` if needed. Anyway, feel free to reopen if you reproduce it. Reproduced, but it was due to an error. The old hardware system I tested with had the old toolchain compiled with a i386 CHOST (stage3-2005-r1), and the new gcc with a i586 mcpu. Then, after a gcc-config swith, the ldconfig in env-update caused the loss of the i386 libraries location. |
I've chosen severity=critical because literally following the steps suggested results in a library broken system: the "emerge sys-libs/libstdc++-v3" command must be executed both before and after the change of the default compiler. Infact in section 3 ("Upgrading from GCC-3.3 to 3.4") both the quick and the slow method lack a warning: if you do the gcc-config change of default compiler, you must have already installed the sys-libs/libstdc++-v3. You can't install it later, because the library cache in ld.so.conf and ld.so.cache miss the necessary library required by python: emerge will not even load the interpreter, halting with a 'libstdc++.so.5: file or directory unavailable'. Should you arrive at this point, only 1) manual editing of ld.so.conf restoring the 3.3.x values and 2) ldconfig -v can recover the old environment to emerge the required package. Or did I miss something?