]> err.no Git - dpkg/commitdiff
dpkg-source/3.0 (quilt): better registration of the automatic patch
authorRaphael Hertzog <hertzog@debian.org>
Sat, 7 Jun 2008 18:50:41 +0000 (20:50 +0200)
committerRaphael Hertzog <hertzog@debian.org>
Sat, 7 Jun 2008 20:08:25 +0000 (22:08 +0200)
* 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.

ChangeLog
scripts/Dpkg/Source/Package/V3/quilt.pm

index 0ced3bfbfbdc14638ab247f7b8fa86e826385f8d..7226c04a145e6f4824a5fe36f744178d401fe9b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-06-07  Raphael Hertzog  <hertzog@debian.org>
+
+       * 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.
+
 2008-06-05  Raphael Hertzog  <hertzog@debian.org>
 
        * scripts/Dpkg/Source/Patch.pm (add_diff_directory): If option
index 7cb8b60ebfafb4caf4e6f888110bf33017b06703..7f3fae40a36acd68c82c103b24ef5390dc1eb2a5 100644 (file)
@@ -208,7 +208,8 @@ sub check_patches_applied {
 sub register_autopatch {
     my ($self, $dir) = @_;
     my $auto_patch = $self->get_autopatch_name();
-    my $has_patch = (grep { $_ eq $auto_patch } $self->get_patches($dir)) ? 1 : 0;
+    my @patches = $self->get_patches($dir);
+    my $has_patch = (grep { $_ eq $auto_patch } @patches) ? 1 : 0;
     my $series = $self->get_series_file($dir);
     $series ||= File::Spec->catfile($dir, "debian", "patches", "series");
     my $applied = File::Spec->catfile($dir, "debian", "patches", ".dpkg-source-applied");
@@ -216,11 +217,12 @@ sub register_autopatch {
     if (-e $patch) {
         # Add auto_patch to series file
         if (not $has_patch) {
-            if ($self->{'options'}{'without_quilt'}) {
-                open(SERIES, ">>", $series) || syserr(_g("cannot write %s"), $series);
-                print SERIES "$auto_patch\n";
-                close(SERIES);
-            } else {
+            # Use quilt to register only if it's wanted/available AND :
+            # - either we have patches and quilt has been used (.pc dir exists)
+            # - or we don't have patches, hence quilt couldn't be used
+            if ((-d "$dir/.pc" or not scalar(@patches)) and
+                not $self->{'options'}{'without_quilt'})
+            {
                 # Registering the new patch with quilt requires some
                 # trickery: reverse-apply the patch, import it, apply it
                 # again with quilt this time
@@ -229,6 +231,10 @@ sub register_autopatch {
                 $self->run_quilt($dir, ['import', "debian/patches/$auto_patch"],
                                  wait_child => 1, to_file => '/dev/null');
                 $self->run_quilt($dir, ['push'], wait_child => 1, to_file => '/dev/null');
+            } else {
+                open(SERIES, ">>", $series) || syserr(_g("cannot write %s"), $series);
+                print SERIES "$auto_patch\n";
+                close(SERIES);
             }
             open(APPLIED, ">>", $applied) || syserr(_g("cannot write %s"), $applied);
             print APPLIED "$auto_patch\n";