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

problem setting up interlibrary dependencies



I'm running into difficulties getting vibrant6 [1] to comply with the
new policy requiring full inter-library dependencies.  The source of
the complication is that two of the libraries come in OpenGL and
non-OpenGL variants, but certain intervening libraries are
OpenGL-agnostic and therefore come in only one variant.

Since OpenGL is a pretty hefty dependency, I'd like to avoid it if
possible, and not have the intermediate libraries indirectly require
it; on the other hand, the GL-enabled variant of the higher-level
library (ncbicn3d) specifically needs the GL-enabled variant of the
lower-level library (vibrant) in order to work properly.  I would also
like for packages that request linkage against plain vibrant not to
end up depending on the GL variant, even if built on systems with the
GL variant installed.  (On the other hand, packages that specifically
try to link against the GL variant should get it)

I haven't quite been able to come up with a reasonable arrangement
that satisfies all of these constraints.  The closest I've come up
with so far falls apart the moment ldconfig runs:

    BASELINE:
    libvibrant-nogl.so.6.1.<date>: real file, soname libvibrant.so.6
    libvibrant-nogl.so.6 -> libvibrant-nogl.so.6.1.<date>
    [libvibrant-nogl.so -> libvibrant-nogl.so.6.1.<date>]
    [libvibrant.so -> libvibrant-nogl.so]
    
    WITHOUT libvibrant6-gl:
    libvibrant.so.6 -> libvibrant-nogl.so.6
    
    WITH libvibrant6-gl:
    libvibrantOGL.so.6.1.<date>: real file, soname libvibrantOGL.so.6
    libvibrantOGL.so.6 -> libvibrantOGL.so.6.1.<date>
    [libvibrantOGL.so -> libvibrantOGL.so.6.1.<date>]
    libvibrant.so.6 -> libvibrantOGL.so.6 (clobbered by ldconfig :-/)

I could perhaps kludge around this by having libvibrant6-gl also
contain a dummy library with a soname of libvibrant.so.6 that pulls in
libvibrantOGL.so.6 and sorts after libvibrant-nogl.so.6.1.<date>, but
that would be gross, and lead to odd-looking ldd output.

Any suggestions?  Should I just punt and force everyone to use the
OpenGL version?  (That would certainly be simplest, but I'd really
prefer to avoid the dependency bloat if I can.)

[1] I am simultaneously renaming the package to libvibrant6, so please
    refrain from commenting on its archaic name. ;-)

-- 
Aaron M. Ucko, KB1CJC (amu at alum.mit.edu, ucko at debian.org)
Finger amu@monk.mit.edu (NOT a valid e-mail address) for more info.



Reply to: