Gentoo Archives: gentoo-user

From: "Vladimir G. Ivanovic" <vgivanovic@×××××××.net>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] parrot & openoffice failures
Date: Thu, 09 Nov 2006 03:31:17
Message-Id: 1163042710.12704.3.camel@scarlatti.leonora.org
In Reply to: Re: [gentoo-user] parrot & openoffice failures by Richard Fish
1 Thanks for taking the time to explain.
2
3 --- Vladimir
4
5 On Wed, 2006-11-08 at 18:47 -0700, Richard Fish wrote:
6 > On 11/8/06, Vladimir G. Ivanovic <vgivanovic@×××××××.net> wrote:
7 > > On Wed, 2006-11-08 at 10:04 -0700, Richard Fish wrote:
8 > > > On 11/8/06, Vladimir G. Ivanovic <vgivanovic@×××××××.net> wrote:
9 > > > > Both parrot-0.4.6 & openoffice-2.0.4 (on AMD64) fail to run because they
10 > > > > are linked to *.so.34 versions of libraries in dev-libs/icu-3.4.1. The
11 > > > > current version is 3.6 with *.so.36 libraries.
12 > > > >
13 > > > > Is this a bug? If it is a bug, is it a bug against parrot & openoffice,
14 > > > > icu or portage?
15 > > >
16 > > > No, not a bug. This is quite normal when updating libraries on gentoo
17 > > > that some applications end up with broken dependencies. You should
18 > > > usually follow world updates with revdep-rebuild to ensure that any
19 > > > broken library dependencies get rebuilt.
20 > >
21 > > Hmmm, I thought that portage handled dependencies automatically.
22 >
23 > Not reverse library dependencies. Portage handles the case where you
24 > install pkg a that depends on libraries from pkg b. It does not
25 > handle rebuilding a when b is updated to a new (major) version.
26 >
27 > It can also use slots to keep old and incompatible versions of a
28 > library around...for example for gtk1 vs gtk2 apps.
29 >
30 > > The other thing I don't understand is why parrot and openoffice failed
31 > > in the first place. Aren't they're linked against, for example,
32 > > libicule.so? I thought the whole point of making libicule.so a symlink
33 > > to the actual library was to allow transparent library upgrades
34 > > (provided the entry points don't change).
35 >
36 > Key statement: "provided the entry points don't change". The standard
37 > convention is to link against the major version of a library, i.e.
38 > libstdc++.so.6 instead of libstdc++.so when given -lstdc++. This is
39 > because the normal convention is that incompatible library versions
40 > (fex, changes to a function arguments) require a change in the
41 > library major number. It is not uncommon to have two major versions
42 > of a library installed...you can easily have something like qt3
43 > (libqt-mt.so.3) and qt4 (libqt-mt.so.4) at the same time with some
44 > applications that need one version and some that need the other.
45 >
46 > Minor library updates (those update the Y or Z components of
47 > libfoo.so.X.Y.Z) work as you describe...allowing a transparent upgrade
48 > of the library.
49 >
50 > BTW, this behavior is defined not by the linker itself, but by the
51 > actual libraries. When creating a shared library, the developer uses
52 > the -soname option to define what actual library name should be linked
53 > against, rather than what was specified on the linker command line.
54 >
55 > Thus, the libfoo.so link usually only serves to tell the linker what
56 > major library version to link with by default.
57 >
58 > -Richard
59 --
60 Vladimir G. Ivanovic <vgivanovic@×××××××.net>
61
62 --
63 gentoo-user@g.o mailing list