[Debian-med-packaging] Bug#558852: Resolve unresolved symbols in shared libraries

Peter Fritzsche peter.fritzsche at gmx.de
Fri Jun 25 20:08:30 UTC 2010


Charles Plessy wrote:
> Le Mon, Nov 30, 2009 at 07:32:24PM +0100, Peter Fritzsche a écrit :
> > Source: emboss
> > Version: 6.1.0-4
> > Severity: wishlist
> > User: peter.fritzsche at gmx.de
> > Usertags: unresolved-symbols-so
> > 
> > I build all packages some time ago with binutils-gold and your package
> > build without an hard failure, but I noticed that you seems to provide a
> > library in a specific library package so other packages can link against
> > it without problems.... but your shared object has still some unresolved
> > symbols which the program which links agaomst it must resolve. This isnt
> > a good idea because when you introduce new dependencies the package
> > previously linked against the old version will break because it doesnt
> > know about the new dependency. Maybe you could link against all needed
> > libraries so programs must not link against libraries which it doesnt
> > need to use.
> 
> Dear Peter,
> 
> thank you for your report, and sorry for not anwering on time.
> 
> My understanding of libraries and linkages is quite weak.

Maybe than it is a good idea to forward the bug report to upstream

> Could you point
> me at a documentation that explains how to “link against all needed
> libraries”.


Hm, there is no documentation at it is quite simple. Just link against those
libraries you are missing. Lets take your package as an example. As I found it
using binutils-gold, we may just install binutils-gold.

First thing I notice is that the clean target of your package deletes files
which are part of the tar.gz (config.guess, config.sub). Thats quite bad when
we try to create a clean diff.tar.gz or debian.tar.gz

dpkg-shlibdeps: warning: symbol XSetFunction used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XGetVisualInfo used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XOpenDisplay used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XGetGeometry used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XQueryPointer used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XPutImage used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XDestroyWindow used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XStoreColor used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XSetForeground used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: symbol XCreateWindow used by debian/emboss-lib/usr/lib/libeplplot.so.3.2.7 found in none of the libraries.
dpkg-shlibdeps: warning: 39 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: dependency on libz.so.1 could be avoided if "debian/emboss-lib/usr/lib/libeplplot.so.3.2.7" were not uselessly linked against it (they use none of 
its symbols).
dpkg-shlibdeps: warning: dependency on libfreetype.so.6 could be avoided if "debian/emboss-lib/usr/lib/libeplplot.so.3.2.7" were not uselessly linked against it (they use 
none of its symbols).
dpkg-shlibdeps: warning: dependency on libjpeg.so.62 could be avoided if "debian/emboss-lib/usr/lib/libeplplot.so.3.2.7" were not uselessly linked against it (they use 
none of its symbols).
dpkg-shlibdeps: warning: dependency on libpng12.so.0 could be avoided if "debian/emboss-lib/usr/lib/libeplplot.so.3.2.7" were not uselessly linked against it (they use 
none of its symbols).
dpkg-shlibdeps: warning: symbol c_pljoin used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrGetLen used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListstrFree used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol c_plgspa used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol c_plptex used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol c_plwid used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrAppendC used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrNewS used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol c_plfill used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol c_plschr used by debian/libajax6/usr/lib/libajaxg.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: 74 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: symbol ajSqlcolumnToUint used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajSqlstatementGetSelectedrows used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajFmtPrintAppS used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListIterDone used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajTablestrFree used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListIterNew used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListPop used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajMessSetErr used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListPush used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrAppendCountK used by debian/libajax6/usr/lib/libensembl.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: 138 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: symbol ajFilenameReplaceExtC used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajReadbinInt used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajMemCallocZero used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajReadbinInt2 used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajReadbinUint used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajBtreeReadEntries used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrGetuniquePtr used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajCallTableRegister used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajRegExecC used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajCallTableDel used by debian/libajax6/usr/lib/libajaxdb.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: 121 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: symbol pcre_exec used by debian/libajax6/usr/lib/libajax.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol epcre_compile used by debian/libajax6/usr/lib/libajax.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajFilenameReplaceExtC used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrCmpCaseS used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrRemoveWhiteExcess used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajMatrixNewFile used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajPhyloTreeDelarray used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrGetLen used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajDiroutExists used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListPushAppend used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajSeqoutDel used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListIterDel used by debian/libajax6/usr/lib/libacd.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: 312 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: dependency on libz.so.1 could be avoided if "debian/libajax6/usr/lib/libeexpat.so.1.1.0 debian/libajax6/usr/lib/libajaxg.so.6.0.2 
debian/libajax6/usr/lib/libensembl.so.6.0.2 debian/libajax6/usr/lib/libajaxdb.so.6.0.2 debian/libajax6/usr/lib/libezlib.so.1.1.0 debian/libajax6/usr/lib/libepcre.so.7.0.9 
debian/libajax6/usr/lib/libajax.so.6.0.2 debian/libajax6/usr/lib/libacd.so.6.0.2" were not uselessly linked against it (they use none of its symbols).
dpkg-shlibdeps: warning: dependency on libgd.so.2 could be avoided if "debian/libajax6/usr/lib/libeexpat.so.1.1.0 debian/libajax6/usr/lib/libajaxg.so.6.0.2 
debian/libajax6/usr/lib/libensembl.so.6.0.2 debian/libajax6/usr/lib/libajaxdb.so.6.0.2 debian/libajax6/usr/lib/libezlib.so.1.1.0 debian/libajax6/usr/lib/libepcre.so.7.0.9 
debian/libajax6/usr/lib/libajax.so.6.0.2 debian/libajax6/usr/lib/libacd.so.6.0.2" were not uselessly linked against it (they use none of its symbols).
dpkg-shlibdeps: warning: dependency on libfreetype.so.6 could be avoided if "debian/libajax6/usr/lib/libeexpat.so.1.1.0 debian/libajax6/usr/lib/libajaxg.so.6.0.2 
debian/libajax6/usr/lib/libensembl.so.6.0.2 debian/libajax6/usr/lib/libajaxdb.so.6.0.2 debian/libajax6/usr/lib/libezlib.so.1.1.0 debian/libajax6/usr/lib/libepcre.so.7.0.9 
debian/libajax6/usr/lib/libajax.so.6.0.2 debian/libajax6/usr/lib/libacd.so.6.0.2" were not uselessly linked against it (they use none of its symbols).
dpkg-shlibdeps: warning: dependency on libjpeg.so.62 could be avoided if "debian/libajax6/usr/lib/libeexpat.so.1.1.0 debian/libajax6/usr/lib/libajaxg.so.6.0.2 
debian/libajax6/usr/lib/libensembl.so.6.0.2 debian/libajax6/usr/lib/libajaxdb.so.6.0.2 debian/libajax6/usr/lib/libezlib.so.1.1.0 debian/libajax6/usr/lib/libepcre.so.7.0.9 
debian/libajax6/usr/lib/libajax.so.6.0.2 debian/libajax6/usr/lib/libacd.so.6.0.2" were not uselessly linked against it (they use none of its symbols).
dpkg-shlibdeps: warning: dependency on libpng12.so.0 could be avoided if "debian/libajax6/usr/lib/libeexpat.so.1.1.0 debian/libajax6/usr/lib/libajaxg.so.6.0.2 
debian/libajax6/usr/lib/libensembl.so.6.0.2 debian/libajax6/usr/lib/libajaxdb.so.6.0.2 debian/libajax6/usr/lib/libezlib.so.1.1.0 debian/libajax6/usr/lib/libepcre.so.7.0.9 
debian/libajax6/usr/lib/libajax.so.6.0.2 debian/libajax6/usr/lib/libacd.so.6.0.2" were not uselessly linked against it (they use none of its symbols).
dpkg-shlibdeps: warning: symbol ajStrCmpCaseS used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrRemoveWhiteExcess used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajFeatTagAdd used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrGetuniquePtr used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajStrGetLen used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajRangeSeqExtractPep used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListPushAppend used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajSeqoutDel used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajListIterDel used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: symbol ajFeatReverse used by debian/libnucleus6/usr/lib/libnucleus.so.6.0.2 found in none of the libraries.
dpkg-shlibdeps: warning: 340 other similar warnings have been skipped (use -v to see them all).
dpkg-shlibdeps: warning: dependency on libz.so.1 could be avoided if "debian/libnucleus6/usr/lib/libnucleus.so.6.0.2" were not uselessly linked against it (they use none 
of its symbols).
dpkg-shlibdeps: warning: dependency on libgd.so.2 could be avoided if "debian/libnucleus6/usr/lib/libnucleus.so.6.0.2" were not uselessly linked against it (they use none 
of its symbols).
dpkg-shlibdeps: warning: dependency on libfreetype.so.6 could be avoided if "debian/libnucleus6/usr/lib/libnucleus.so.6.0.2" were not uselessly linked against it (they use 
none of its symbols).
dpkg-shlibdeps: warning: dependency on libjpeg.so.62 could be avoided if "debian/libnucleus6/usr/lib/libnucleus.so.6.0.2" were not uselessly linked against it (they use 
none of its symbols).
dpkg-shlibdeps: warning: dependency on libpng12.so.0 could be avoided if "debian/libnucleus6/usr/lib/libnucleus.so.6.0.2" were not uselessly linked against it (they use 
none of its symbols).
dh_gencontrol -a
dpkg-gencontrol: warning: Depends field of package libajax6-dev: unknown substitution variable ${shlibs:Depends}
dpkg-gencontrol: warning: Depends field of package libnucleus6-dev: unknown substitution variable ${shlibs:Depends}

Now search for the functions and where they should came form.
libeplplot.so.3.2.7 for example needs libX11. libajaxg.so.6.0.2 needs libeplplot.

So I've opened plplot/Makefile.am and changed

< libeplplot_la_LDFLAGS = $(LINKFLAGS)
> libeplplot_la_LDFLAGS = $(LINKFLAGS) -lX11

Now the auto* stuff must be regenerated.

So at least libeplplot.so.3.2.7 should have less unresolved symbols. But as
your package is broken (see #587170), I stop here.

There are other things like that the test suite fails, but the package still
claims that it builds fine.

Best regards.
	Peter





More information about the Debian-med-packaging mailing list