Raphael Hertzog [Sun, 8 Jun 2008 21:29:43 +0000 (23:29 +0200)]
dpkg-source: be less strict on filenames accepted in patches
* scripts/Dpkg/Source/Patch.pm (analyze): Be less strict in
filenames accepted on ---/+++ lines. Don't blow up on absolute
filenames if the other one is fine. Make sure to use the one that
is relative and that corresponds to a real file when possible.
Raphael Hertzog [Sun, 8 Jun 2008 19:03:24 +0000 (21:03 +0200)]
dpkg-source/3.0 (quilt): use absolute path names with quilt
* scripts/Dpkg/Source/Package/V3/quilt.pm: Use absolute path names
when giving directories and filenames to quilt to avoid any
problems due to quilt's feature of trying relative paths in parent
directories too.
Raphael Hertzog [Sat, 7 Jun 2008 20:08:05 +0000 (22:08 +0200)]
dpkg-source: accept patches with missing context at the end
* scripts/Dpkg/Source/Patch.pm (analyze): Accept unexpected
end-of-file in patches if we're missing no more than 2 lines
of context. Output a warning instead.
Raphael Hertzog [Sat, 7 Jun 2008 18:50:41 +0000 (20:50 +0200)]
dpkg-source/3.0 (quilt): better registration of the automatic patch
* scripts/Dpkg/Source/Package/V3/quilt.pm (register_autopatch):
Register the newly created patch with quilt only if quilt has
already been used to apply the existing patches (or if we don't
have any patch yet), otherwise register it manually at the end of
the series.
Raphael Hertzog [Thu, 5 Jun 2008 17:00:31 +0000 (19:00 +0200)]
dpkg-source/3.0 (quilt): allow /dev/null in automatic patch
* scripts/Dpkg/Source/Patch.pm (add_diff_directory): If option
use_dev_null is set, then the label of the "old" file will be
'/dev/null' if we're creating a new file (instead of using the
name of the created file, like it's currently done in .diff
of version "1.0" source packages).
* scripts/Dpkg/Source/Package/V2.pm (prepare_build): Use the new
option "use_dev_null" when creating the automatic patch.
Raphael Hertzog [Wed, 4 Jun 2008 19:26:47 +0000 (21:26 +0200)]
dpkg-source: improve the patch parser
* scripts/Dpkg/Source/Patch.pm (analyze): Enhance function to
parse correctly many more patches that are accepted by the patch
utility itself:
- ignore/strip carriage return of patches with Windows end of lines
- accept empty lines as contextual lines (instead of the expected " ")
- accept spaces as separator between filename and timestamp if
there's no tab
- accept a name that differs on the +++ line if the name in --- is
correct, and use the name in +++ if this one exists while the one
on --- doesn't.
Raphael Hertzog [Wed, 28 May 2008 19:06:40 +0000 (21:06 +0200)]
dpkg-source: make sure the source package format is respected
* scripts/Dpkg/Source/Package.pm (extract): If we extract a
source package that uses a non-standard source package format (!= 1.0)
then we create debian/source/format to remember it.
* scripts/dpkg-source.pl: Use debian/source/format as a new source
of format to try when building the package. Prioritize it lower than
command line and debian/control but higher than the default build
formats.
* man/dpkg-source.1: Document the above changes.
Raphael Hertzog [Wed, 28 May 2008 17:28:50 +0000 (19:28 +0200)]
dpkg-source/3.0 (quilt): better integration with quilt
* scripts/Dpkg/Source/Package/V3/quilt.pm: Factorize calls to
quilt in a new run_quilt() function. And check only once
if quilt is available while setting the default value of
without_quilt option. Last but not least, register properly the
automatically generated patch with quilt import.
Raphael Hertzog [Wed, 28 May 2008 16:05:50 +0000 (18:05 +0200)]
dpkg-source/3.0 (quilt): improve reliability of check_patches_applied
* scripts/Dpkg/Source/Patch.pm (check_apply): New function to
verify if a patch will successfully apply on top of a given
directory.
* scripts/Dpkg/Source/Package/V3/quilt.pm (check_patches_applied):
Don't trust debian/patches/.dpkg-source-applied blindly. Get a
list of (supposedly unapplied) patches and verify if the first
patch applies or not. If yes, then apply the patch series,
otherwise do not (and assume that the patch series is already
applied).
* scripts/Dpkg/Source/Package/V2.pm (do_build): Display a
message when local modifications are stored in a new
automatic patch. This messages includes a list of
modified files.
Raphael Hertzog [Fri, 23 May 2008 08:11:17 +0000 (10:11 +0200)]
dpkg-source: improve compatibility of 3.0 (quilt) with existing patch systems
* scripts/Dpkg/Source/Package/V3/quilt.pm: Remove the .diff
from the name of the automatically generated patch. It will
facilitate the switch to this format: packages using
patch system that apply debian/patches/*.{patch,diff}
will not be bothered by the presence of the quilt series
created by dpkg-source itself.
* man/dpkg-source.1: Update the documentation accordingly.
* man/po/*.po: Fix all the filenames to avoid fuzzying
translations.
Raphael Hertzog [Sun, 11 May 2008 14:41:23 +0000 (16:41 +0200)]
Activate triggers when a file is removed in a shared directory
* src/processarc.c (process_archive): While removing files that
disappeared, move the call to namenodetouse before the test
that skips directory shared with other packages. This is required
because namenodetouse() handles trigger activation and we really
want directories containing (only) removed files to activate the
corresponding triggers.
Raphael Hertzog [Thu, 8 May 2008 18:17:31 +0000 (20:17 +0200)]
dpkg-source (2.0/3.0 (quilt)): create stamp file with automatic patch
* scripts/Dpkg/Source/Package/V2.pm,
scripts/Dpkg/Source/Package/V3/quilt.pm: Ensure the
.dpkg-source-applied stamp file is created when an automatic patch
is created so that a second build doesn't try to mistakenly
reapply it.
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.