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.
Raphael Hertzog [Fri, 3 Aug 2007 14:57:49 +0000 (16:57 +0200)]
Avoid creating empty DEBIAN/symbols files during build.
Once invoked, dpkg-gensymbols used to always write out a file
even if the scan didn't find any symbol information. Now, unless
the output file has been manually specified, it won't do so
anymore. With this change, it's now possible to always add
a dpkg-gensymbols call in debian/rules and it will really be a
no-op if the package doesn't contain a library.
Complete and update the manual pages for the new symbols stuff
* Update dpkg-shlibdeps(1).
* Create manual page dpkg-gensymbols(1) for the new command.
* Create deb-symbols(5) to describe the format of the symbols file.
* Updated the Makefile.am to include the new manual pages.
* Bugfix: really use /etc/dpkg/shlibs.default
* Improvement: only look for debian/*/DEBIAN/{symbols,shlibs} instead of looking into subdirectories as well. File::Find is no more needed.
* Define $foo->has_lost_symbols($ref) as $ref->has_new_symbols($foo).
* Same for has_lost_libs.
* Fixed improper usage of File::Temp object in a non-regression test.
Move most of Dpkg::Shlibs::Objdump::parse and
the complete ::parse_dynamic_symbol to ::Object
since these both actually only work on a specific
object. Also divide the parse function into to
parts _read and _parse where the first is responsible
for calling objdump and the second for parsing the output.
(Or any other filehandle it gets).
This allows for easier testing of the parsing part without
having actually to run objdump on a file.
Also add some tests to 200_Dpkg_Shlibs to verify that the
module still works after all these changes.
I tried to adapt dpkg-shlibdeps to the new API but haven't
verified that it still works.
Copy code from controllib.pl and dpkg-gettext.pl to proper modules
When trying to use proper perl modules together with stuff like
controllib.pl, all kind of "interesting" scoping issues arise.
Code that is already converted to modules should not use these
"old-style" modules. Create Dpkg::Gettext as a near verbatim copy
of dpkg-gettext.pl and a Dpkg::ErrorHandling as a container for some
error reporting functions from controllib.pl that are used by Raphael's
modules.
Note that this (at least Dpkg::ErrorHandling) should be only an interim
solution until a proper API gets defined.
1) Add a new script dpkg-gensymbol that can produce lists of
symbols from shared libraries
2) Modifies dpkg-shlibdeps so that it can use these lists to
compute better (i.e. less strict) shlib dependencies.
3) Refactors a lot of code on the way and moves some out to
modules (that are not usable for third-party use yet, though
and will be installed in dpkg's private library directory
correct permission and owner/group handling when extracting
tar balls to match more the user's preferences instead of
ours or the ones from the originator of the tar ball. Patch
by Ian Jackson. Closes: #390915, #207289
Guillem Jover [Tue, 12 Jun 2007 05:00:07 +0000 (05:00 +0000)]
- Remove an additional space in install-info(8) and mark gzip in bold
and remove redundant reference to GNU.
- Fix explanation of dpkg-source '-b' option, remove a reference to
checking for a missing empty string argument, and add a reference
to '-sX' arguments affecting the behaviour. Closes: #428167
Guillem Jover [Tue, 15 May 2007 12:56:33 +0000 (12:56 +0000)]
* scripts/dpkg-divert.pl (checkmanymodes): Change the error message to
say 'commands' instead of 'modes'.
* scripts/dpkg-statoverride.pl (CheckModeConflict): Likewise. Use
gettext for the string.