tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: travails of the pixman upgrade [Was: Is pango still broken? (vim-gtk2 won't build)]



On Wed 22 Sep 2010 at 13:01:47 +0700, Robert Elz wrote:
> mrg%eterna.com.au@localhost said:
>   |  i'm not sure exactly understand the question though.  are there two 
> shlibs
>   | being linked?  or just two with the same name in different subdirs of the
>   | link path? 
> 
> There are (as above) lots of libs being linked.   The problem is two with
> the same name in different dirs in the link path (which are different versions
> of the same basic library, old in X11R7/lib and new in pkg/lib).

I have seen similar problems too. Linux and FreeBSD use global search
paths that apply to all executables; they suffer the most. We have
search paths in our executables, it is better but not perfect. There
should be separate search paths for each library, or perhaps simpler,
just absolute paths for them. But I'm not sure if ELF supports that.

These things are made worse by the fact that pkg-config (or the .pc
files it relies upon) seems to make the transitive closure of required
libraries. Even though shared libraries are perfectly able to pull in
their requirements themselves.  (For static libs this is needed though,
but pkg-config has a --static option for that case).

Example: libgtk.so pulls in libglib.so.13 by itself (as can be seen by
the output of ldd), but `pkg-config --libs gtk+' spits out `-lglib' as
one of the libraries to link. Including potentially extra search path
option.

This re-creates extra dependencies on library versions, that we
rooted out of pkgsrc proper before, but are coming back through the back
door, and makes it more likely that a single program gets to link with
different versions of the same library.

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- There's no point being grown-up if you 
\X/ rhialto/at/xs4all.nl    -- can't be childish sometimes. -The 4th Doctor


Home | Main Index | Thread Index | Old Index