Raphael Hertzog [Thu, 8 May 2008 17:12:23 +0000 (19:12 +0200)]
dpkg-source (2.0/3.0 (quilt)): refuse binary files in debian subdir
* scripts/Dpkg/Source/Functions.pm (is_binary): New function
to check if a file is binary by using diff against it.
* scripts/Dpkg/Source/Package/V2.pm (do_build): Check that all files from
the debian sub-directory are non-binary and only allow whitelisted binary
files.
* man/dpkg-source.1: Document this behaviour.
dpkg-source: change the logic to find the object used to unpack/build
* scripts/Dpkg/Source/Package.pm (upgrade_object_type): Instead
of using the full Format: version to deduce the perl object name
use only the major part of the version. The minor part is under
control of the corresponding object, that way they can evolve
and indicate that the source package has changed in a backwards
compatible way. See
http://lists.debian.org/debian-dpkg/2008/04/msg00045.html
Also add a new parameter to disable update of the minor version in
the Format field.
(initialize): Don't let the Format field be updated by
upgrade_object_type() as this function only loads information from
the .dsc into the object.
* scripts/Dpkg/Source/Package/**: Rename V1_0.pm into V1.pm,
V2_0.pm into V2.pm and V3_0/ into V3/. Fix perl package names
accordingly. Integrated a $CURRENT_MINOR_VERSION set to "0"
in all packages.
* scripts/Makefile.am, scripts/po/POTFILES.in: Update the lists
according to above file renames.
dpkg-source: parse correctly series files with patch options
* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Parse correctly
series files with patch options and warn if something else than
-p1 is used.
* man/dpkg-source.1: Document how dpkg-source handles those patch
options in series files.
dpkg-genchanges: use Package-Type control field to detect udebs
* scripts/Dpkg/Fields.pm (find_custom_field, get_custom_field):
New function to handle custom fields (X[SBC]*-*).
* scripts/dpkg-genchanges.pl: Use Package-Type control field to
decide if a package is an udeb instead of relying on the file
extension of a generated package since that doesn't work when
generating source-only uploads for example.
dpkg-source: handle better symlinks to orig tarball
* scripts/Dpkg/Path.pm (check_files_are_the_same): Add a new
parameter so that we can use stat() instead of lstat() and
compare if pointed files are the same.
* scripts/Dpkg/Source/Package.pm: Resolve symlinks before deciding
if both original tarballs are the same or not. Use the new
parameter of check_files_are_the_same() for this.
* scripts/Dpkg/Source/Package/V1_0.pm: Remove useless import of
check_files_are_the_same.
* 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.