Let dpkg-shlibdeps be smarter about missing symbols
dpkg-shlibdeps complains about missing symbols only for executables
(as defined by the ELF type) and public libraries (as defined by the
ELF type and the existence of a SONAME). This avoids many warnings
for perl modules and python modules.
Make dpkg-shlibdeps fail if it doesn't find dependency information
If dpkg-shlibdeps doesn't find any dependency information for a shared library
that is actively used, then it will fail. This can be disabled with the option
--ignore-missing-info. Closes: #10807
Add "-x<package>" option to dpkg-shlibdeps to exlude packages
dpkg-shlibdeps now supports "-x<package>" options that can be used to exclude
packages from generated dependencies. This is particalularly useful to
avoid self-dependencies when a package contains a binary and a library (without
requiring an shlibs.local file to override the usual shlibs file). It might
also be used to avoid other unwanted dependencies (use with care though). Closes: #41907, #109954
Fix parsing of shlibs files with respect to packagetype
An shlibs line without packagetype should be used as fallback in case we
don't find any dependency for that packagetype (udeb). So end the parsing
in extract_shlibs only if the packagetype is given and if it matches with
the current one. If the packagetype is not given, remember the dependency
but continue parsing the file to check if we don't have a more specific
dependency.
Emulates the dpkg --compare-versions behaviour (Doesn't support
the -nl operators yet, though). This is often easier to write and
read instead of using vercmp directly.
Brian M. Carlson [Fri, 14 Sep 2007 05:24:56 +0000 (08:24 +0300)]
Fix failed install followed by failed remove resulting in installed state
After '<prerm> remove' fails and while doing the error unwinding, if
the '<postinst> abort-remove' call succeeds, preserve the old status
instead of unconditionally setting it to 'Installed'.
Raphael Hertzog [Tue, 14 Aug 2007 13:22:23 +0000 (15:22 +0200)]
Deperecate a symbol only when the history of version matches.
When merging symbols in a SymbolFile, a symbol is deprecated when it has
disappeared from the new set of symbols. However when the new set of
symbols dates back to before the current one, deprecating doesn't make
sense. This patch corrects this behaviour. Also add a test to verify that
symbols got correctly marked as deprecated.
Raphael Hertzog [Tue, 14 Aug 2007 13:09:58 +0000 (15:09 +0200)]
Don't consider local symbols when merging symbols in SymbolFile
Local symbols can only be used by the object defining them so they
can't be used by applications linked against the library. Hence they
are not needed in the "symbols" files that we used to track dependencies
on shared libraries. Use the get_exported_dynamic_symbols function to
ensure that we use the right set of symbols.
Raphael Hertzog [Mon, 13 Aug 2007 21:08:27 +0000 (23:08 +0200)]
Fixed parsing of objdump's output on ia64
ia64 libraries tend to have more entries listed by objdump
with visibility attributes and no versions. This was unexpected
and ended up with the visibility being mistakenly used as symbol
version. This fixes that case and adds a corresponding
non-regression test.
Raphael Hertzog [Mon, 13 Aug 2007 19:44:15 +0000 (21:44 +0200)]
Blacklist useless internal symbols in SymbolFile
Some external symbols are never used by the applications. They are only
used by the "internal machinery" and create spurious architecture-specific
differences in the symbols files. Thus it's best if we explicitely ignore
them.
Raphael Hertzog [Mon, 13 Aug 2007 16:33:47 +0000 (18:33 +0200)]
Updated dpkg-gensymbols's man page with lots of information
Explain the new include mechanism and in which cases it can be useful.
Also explain the need to keep the symbols file up-to-date. Include
recommendations to verify that upstream changes the library in sane ways.
This probably needs to be expanded, but probably in an external non-dpkg
related document that we could point to.
Raphael Hertzog [Mon, 13 Aug 2007 13:29:44 +0000 (15:29 +0200)]
Add include mechanism for symbols files.
It's now possible to include external files in a "symbols" file
using a cpp-like syntax (#include "filetoinclude"). Provisions
for recursive includes are done. Also add some regression tests.
This is meant to be used by complex packages which have differences
between various architectures and which still want to factorize
some common list of symbols.