cvs commit: src/lib/msun/i387 fenv.c fenv.h

Peter Jeremy PeterJeremy at optushome.com.au
Fri Mar 18 11:08:44 PST 2005


On Fri, 2005-Mar-18 01:13:57 -0700, Scott Long wrote:
>No, I think that what he's worried about is that you have port foo that
>generates a library called libfoo.so.1, and that library is linked
>against libm.so.2.  You then have port bar that generates a binary
>linked against libfoo.so.1 and libm.so.2.  Now lets say that libm.so.2
>gets bumped to libm.so.3, and you also rebuild port bar.  Now bar is
>linked to libfoo.so.1 and libm.so.3, but libfoo.so.1 is still linked
>against libm.so.2;

Is it worthwhile checking (and warning) about this condition?  Possible
options include:
1) ld-elf.so learning that a .so is make up of a name and a version number
   and whinging if an executable attempts to load two shared libraries with
   the same name and different versions.
2) ld(1) whinging (and failing) if the shared libraries on the command
   line would result in the final executable being linked against two
   different versions of a shared library.
3) portupgrade (or even port dependency checking) doing an 'ldd' on each
   dependency and either complaining or rebuilding any where the dependency
   predates a library bump.  (Doing this properly probably means building
   the port then discovering that it now needs multiple .so versions and
   having to rebuild it after cleaning up the offending dependency).

Note that 2 and 3 don't pick up .so's that are dlopen()d by the code
and 3 only works for ports.

This is off the top of my head and further thought may suggest reasons
why the above aren't practical.

-- 
Peter Jeremy


More information about the cvs-src mailing list