Thanks for taking the time to explain. --- Vladimir
On Wed, 2006-11-08 at 18:47 -0700, Richard Fish wrote: > On 11/8/06, Vladimir G. Ivanovic <[EMAIL PROTECTED]> wrote: > > On Wed, 2006-11-08 at 10:04 -0700, Richard Fish wrote: > > > On 11/8/06, Vladimir G. Ivanovic <[EMAIL PROTECTED]> wrote: > > > > Both parrot-0.4.6 & openoffice-2.0.4 (on AMD64) fail to run because they > > > > are linked to *.so.34 versions of libraries in dev-libs/icu-3.4.1. The > > > > current version is 3.6 with *.so.36 libraries. > > > > > > > > Is this a bug? If it is a bug, is it a bug against parrot & openoffice, > > > > icu or portage? > > > > > > No, not a bug. This is quite normal when updating libraries on gentoo > > > that some applications end up with broken dependencies. You should > > > usually follow world updates with revdep-rebuild to ensure that any > > > broken library dependencies get rebuilt. > > > > Hmmm, I thought that portage handled dependencies automatically. > > Not reverse library dependencies. Portage handles the case where you > install pkg a that depends on libraries from pkg b. It does not > handle rebuilding a when b is updated to a new (major) version. > > It can also use slots to keep old and incompatible versions of a > library around...for example for gtk1 vs gtk2 apps. > > > The other thing I don't understand is why parrot and openoffice failed > > in the first place. Aren't they're linked against, for example, > > libicule.so? I thought the whole point of making libicule.so a symlink > > to the actual library was to allow transparent library upgrades > > (provided the entry points don't change). > > Key statement: "provided the entry points don't change". The standard > convention is to link against the major version of a library, i.e. > libstdc++.so.6 instead of libstdc++.so when given -lstdc++. This is > because the normal convention is that incompatible library versions > (fex, changes to a function arguments) require a change in the > library major number. It is not uncommon to have two major versions > of a library installed...you can easily have something like qt3 > (libqt-mt.so.3) and qt4 (libqt-mt.so.4) at the same time with some > applications that need one version and some that need the other. > > Minor library updates (those update the Y or Z components of > libfoo.so.X.Y.Z) work as you describe...allowing a transparent upgrade > of the library. > > BTW, this behavior is defined not by the linker itself, but by the > actual libraries. When creating a shared library, the developer uses > the -soname option to define what actual library name should be linked > against, rather than what was specified on the linker command line. > > Thus, the libfoo.so link usually only serves to tell the linker what > major library version to link with by default. > > -Richard -- Vladimir G. Ivanovic <[EMAIL PROTECTED]> -- [email protected] mailing list

