* scripts/Dpkg/Shlibs/SymbolFile.pm (get_smallest_version): New
function to retrieve the smallest "minver" of all symbols of a
given library.
* scripts/dpkg-shlibdeps.pl: Do not initialize dependencies of
libraries with symbols files as unversioned, instead use the
smallest minimal version returned by the function above. This
is required because the library might not have always been
available in the package and the unversioned dependency thus
doesn't ensure his presence.
* scripts/t/800_Dpkg_IPC.t: Remove temporary files used by the
tests.
Ensure the Files field is last in *.dsc and *.changes
* scripts/Dpkg/Source/Package.pm, scripts/dpkg-genchanges.pl:
Explicitely put Checksums-* fields before the Files field so that
the Files field is last. This is a work-around for some braindead
dsc parsers (dupload and sbuild for instance, see #473518 and
* scripts/Dpkg/Source/Package/V2_0.pm: Add the option
--skip-patches to not apply patches at the end of the source
package extraction. Also works for Format: 3.0 (quilt).
* man/dpkg-source.1: Document the above change.
Raphael Hertzog [Sun, 30 Mar 2008 16:03:38 +0000 (18:03 +0200)]
Apply patches before building source packages when needed
* scripts/Dpkg/Source/Package/V2_0.pm (do_extract): Create
debian/patches/.dpkg-source-applied containing the list of patches
applied during extraction.
(prepare_build): apply patches before trying to build a source package
when it's clear that they have not been applied because
debian/patches/.dpkg-source-applied doesn't exist.
* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Likewise. If a .pc directory
is present, then use "quilt unapplied" to check if all patches have been
applied.
* man/dpkg-source.1: Document the above changes.
Raphael Hertzog [Fri, 28 Mar 2008 13:29:36 +0000 (14:29 +0100)]
Ease cross-compilation by giving a default value to PKG_CONFIG_LIBDIR
* scripts/dpkg-buildpackage.pl: If the user request a cross-compilation,
then define PKG_CONFIG_LIBDIR so that it will look in directories
specidic to the target architecture.
* man/dpkg-buildpackage.1: Document this change and also the -t option.
Raphael Hertzog [Fri, 28 Mar 2008 16:59:41 +0000 (17:59 +0100)]
dpkg-buildpackage: change default value of LDFLAGS
* scripts/dpkg-buildpackage.pl: LDFLAGS now defaults to an empty
value instead of "-Wl,-Bsymbolic-functions". The latter can break
some libraries at run-time and such a change is best done
at the beginning of a release cycle.
Raphael Hertzog [Tue, 25 Mar 2008 10:33:06 +0000 (11:33 +0100)]
dpkg-shlibdeps: new warning about useless libraries, new --warnings option
* scripts/dpkg-shlibdeps.pl: Let the user configure the set of
warnings that he wants. Add a new warning for useless libraries
on all binaries analyzed. Disable by default the warning that
does the same but individually, for each binary analyzed.
* man/dpkg-shlibdeps.1: Update manual page accordingly.
Raphael Hertzog [Thu, 20 Mar 2008 14:16:51 +0000 (15:16 +0100)]
Dpkg::Source::Patch: change an error into a warning
* scripts/Dpkg/Source/Patch.pm (analyze): An empty patch
is still valid, instead of failing simply generate a warning.
21 packages in the archive have an empty .diff.gz and
they can't be extracted without this fix.
Raphael Hertzog [Wed, 19 Mar 2008 21:38:09 +0000 (22:38 +0100)]
dpkg-source: keep the old output for tools that parse the directory
* scripts/dpkg-source.pl: Old version of lintian and sbuild do parse the
output of dpkg-source to find the name of the unpacked directory. Thus
keep the old output for this precise string until the tools get fixed.
Raphael Hertzog [Tue, 18 Mar 2008 16:39:08 +0000 (17:39 +0100)]
Avoid extracting files through symlinks
* scripts/Dpkg/Source/Package/V2_0.pm (do_extract): Now
that the debian tarball is extracted in-place over the
unpacked source directory, it's important to not let tar
unpack files in symlinked directories (otherwise it would
be possible to write files outside of the unpacked
source tree).
Raphael Hertzog [Tue, 18 Mar 2008 10:55:11 +0000 (11:55 +0100)]
Allow inclusion of binary files outside of the debian subdirectory
* scripts/Dpkg/ErrorHandling.pm (errormsg): New function displaying
an error message to stderr without dying.
* scripts/Dpkg/Source/Patch.pm (add_diff_file): Add a hook in the
handling of modified binary files. Don't fail unconditionnaly when a
binary file is detected. Return a value indicating if the diff
call succeeded.
(add_diff_directory): Don't display some warnings (that apply only to
files whose changes can be represented in diff) for modified
binary files.
(_fail_with_msg, _fail_not_same_type): Use new errormsg() function.
* scripts/Dpkg/Source/Package/V2_0.pm (do_extract): Extract the debian
tarball "in-place" so that it can contain other files besides the debian
sub-directory.
(do_build): Handle modified binary files. They are added to the debian
tarball if --include-binaries is used, or if they are whitelisted in
debian/source/include-binaries. The usage of --include-binaries will
modify debian/source/include-binaries if needed.
* man/dpkg-source.1: Update manual page accordingly.
Raphael Hertzog [Tue, 18 Mar 2008 10:33:49 +0000 (11:33 +0100)]
Allow in-place extraction of a tar archive
* scripts/Dpkg/Source/Archive.pm: New "in_place" option to
extract an archive in the target directory instead of replacing
the whole target directory. Replace the logic to fix permissions
by fixperms() which is a...
* scripts/Dpkg/Source/Functions.pm (fixperms): new function to
fix permissions on a given directory so that they match the rights
expected through the umask.
Raphael Hertzog [Tue, 18 Mar 2008 10:31:26 +0000 (11:31 +0100)]
Allow patches in wig&pen format to remove files
* scripts/Dpkg/Source/Package/V2_0.pm: Use -E option of patch
to apply patches so that empty files are removed.
* man/dpkg-source.1: Update manual page accordingly.
Raphael Hertzog [Sun, 16 Mar 2008 22:27:59 +0000 (23:27 +0100)]
dpkg-shlibdeps: accounts usage of symbols of libraries without SONAME
* scripts/Dpkg/Shlibs/Objdump.pm: Add "objid" property to
symbols and fake "soname" property with the basename of the
object's filename if the object has no official SONAME.
* scripts/dpkg-shlibdeps.pl: Add some more debugging messages.
* scripts/dpkg-shlibdeps.pl: Also count usage of alternate sonames
for symbols found in symbols files.
Raphael Hertzog [Sun, 16 Mar 2008 18:17:03 +0000 (19:17 +0100)]
Update indentation and coding style to be coherent with the other modules
* scripts/Dpkg/Source/Package/V3_0/bzr.pm: Use 4 spaces everywhere
for indentation. Put spaces around " = ".
* scripts/Dpkg/Source/Package/V3_0/git.pm: Same here.
Raphael Hertzog [Sun, 16 Mar 2008 18:03:59 +0000 (19:03 +0100)]
Uniformize @argv parsing in source package formats
* scripts/Dpkg/Source/Package/V2_0.pm: Improve error
message when we have too many arguments.
* scripts/Dpkg/Source/Package/V3_0/bzr.pm: Same here.
* scripts/Dpkg/Source/Package/V3_0/git.pm: Same here.
* scripts/Dpkg/Source/Package/V3_0/native.pm: Add check
of number of arguments.
* scripts/Dpkg/Source/Package/V1_0.pm: Make sure we're
not going to fail when we delegate to do_build() of
V3_0/native.pm.
Raphael Hertzog [Sun, 16 Mar 2008 15:13:03 +0000 (16:13 +0100)]
New source package format "3.0 (custom)"
* scripts/Dpkg/Source/Package/V3_0/custom.pm: Module implementing
a fake source package format. It provides a convenient way to generate
a source package containing arbitrary files. It's meant to be used
by helper tools like git-buildpackage or svn-buildpackage.
* scripts/Makefile.am, scripts/po/POTFILES.in: Register the above
file.
Raphael Hertzog [Sun, 16 Mar 2008 14:29:13 +0000 (15:29 +0100)]
Use default ignore rules for source package with format >> 1.0
* scripts/dpkg-source.pl: Remove default ignore patterns
and move them...
* scripts/Dpkg/Source/Package.pm: ...here. The init_options()
method now will give default values to the corresponding
options.
* scripts/Dpkg/Source/Package/V2_0.pm (init_options): Call
the parent init_options() to get the default ignore rules.
* scripts/Dpkg/Source/Package/V1_0.pm: Don't call the
parent init_options() as we don't want default values
for format 1.0.
Raphael Hertzog [Sun, 16 Mar 2008 12:34:46 +0000 (13:34 +0100)]
dpkg-source: factorize logic of copy of original tarballs
* scripts/Dpkg/Source/Package.pm (extract): Now handles copy
of original tarballs and addition of executable right to
debian/rules.
scripts/Dpkg/Source/Package/V1_0.pm (do_extract, parse_cmdline_option):
Don't copy the original tarball as it's already done by extract().
* scripts/dpkg-source.pl: New option --no-copy to not copy
the original tarballs. New option --no-check to not check signature
and checksum. Misc cleanup in the options handling code.
Colin Watson [Sun, 16 Mar 2008 10:45:25 +0000 (11:45 +0100)]
Add bzr-based source package format
* scripts/Dpkg/Source/Package/V3_0/bzr.pm: New module handling
the "3.0 (bzr)" source package format. It's based on the git
one.
* scripts/Makefile.am, scripts/po/POTFILES.in: Register the above
file.
Raphael Hertzog [Sat, 15 Mar 2008 22:20:54 +0000 (23:20 +0100)]
Each source package format can have its own command line options
* scripts/Dpkg/Source/Package.pm (init_options): Provide default
values to various options in a format-specific way.
* scripts/Dpkg/Source/Package.pm (parse_cmdline_options,
parse_cmdline_option): New functions to handle command line options.
* scripts/dpkg-source.pl: Forward unknown options to the
source package object. Remove handling of all -s? options
and move it...
* scripts/Dpkg/Source/Package/V1_0.pm: ...here.
* scripts/Dpkg/Source/Package/V2_0.pm: Add support of options
--include-removal and --include-timestamp.
* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Add support of option
--without-quilt.
Raphael Hertzog [Sat, 15 Mar 2008 14:31:02 +0000 (15:31 +0100)]
Allow deletion of files by patches in Format: 3.0 (quilt)
* scripts/Dpkg/Source/Patch.pm (add_diff_directory): New option to
be able to generate a diff for a removed file (instead of ignoring
its deletion).
* scripts/Dpkg/Source/Patch.pm (apply): New option "add_options" to
add some options to the default set of options.
* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Pass -E option to
patch when applying patches without quilt. This will remove
patched files which end up being empty.