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

Re: dpkg-shlibdeps: warning: dependency on.... (they use none of its symbols)



* Chow Loong Jin <hyperair@gmail.com> [090320 09:58]:
> > > Just curiosity, what kind of problems can be caused from using --as-needed?
> > My memory of this is vague, searching the BTS I found these though:
> >
> > http://bugs.debian.org/379748
> > http://udrepper.livejournal.com/11056.html
> > http://udrepper.livejournal.com/10946.html
> > http://bugs.debian.org/502083
> > http://bugs.debian.org/320697
> >
> In that case would I be right in summarizing this up as --as-needed
> causes issues only when dlopen is used where the dlopen'd library
> requires symbols that are linked in via -lsomelibrary?

No, that means that issues have been found in this cases yes.
--as-needed radically changes the meaning of -l with a shared library.
Just that all other than the given one people can think of do not exist
in practise (or do not yet have shown up[1]), does not mean there cannot be
other cases.

Thus I stronly suggest to not use it unless you exactly know what
happens and that the difference has no meaning in the case at hand.

Otherwise I suggest to rather ignore the warning or hide it with
dpkg-shlibdeps' --warnings= instead of risking to break something.

Hochachtungsvoll,
	Bernhard R. Link

[1] Which might be because most are quite absurd:
Assume a program uses libB, which uses libA but leaks some details out,
so that the program then uses features depending on which libA it was
compiled with (sounds ugly, but this world is not perfect). libA's
maintainer knows this and thus not have a symbols file but just a
shlibs file to have at least the version of the library when the last
time such a new feature was added. Assume program's upstream knows this
thus added a explicit link to that library.
Now if the maintainer just adds --as-needed to get rid of the warning,
the package will no longer have a dependency to get a new enough libA.
The ugly thing with this case is that it will not show up in unstable,
but for example when the package migrates to testing but libA did not...


Reply to: