Bladeren bron

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 18 jaren geleden
bovenliggende
commit
54d097352d
2 gewijzigde bestanden met toevoegingen van 20 en 6 verwijderingen
  1. 8 0
      ChangeLog
  2. 12 6
      scripts/Dpkg/Source/Package/V3/quilt.pm

+ 8 - 0
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>
 2008-06-05  Raphael Hertzog  <hertzog@debian.org>
 
 
 	* scripts/Dpkg/Source/Patch.pm (add_diff_directory): If option
 	* scripts/Dpkg/Source/Patch.pm (add_diff_directory): If option

+ 12 - 6
scripts/Dpkg/Source/Package/V3/quilt.pm

@@ -208,7 +208,8 @@ sub check_patches_applied {
 sub register_autopatch {
 sub register_autopatch {
     my ($self, $dir) = @_;
     my ($self, $dir) = @_;
     my $auto_patch = $self->get_autopatch_name();
     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);
     my $series = $self->get_series_file($dir);
     $series ||= File::Spec->catfile($dir, "debian", "patches", "series");
     $series ||= File::Spec->catfile($dir, "debian", "patches", "series");
     my $applied = File::Spec->catfile($dir, "debian", "patches", ".dpkg-source-applied");
     my $applied = File::Spec->catfile($dir, "debian", "patches", ".dpkg-source-applied");
@@ -216,11 +217,12 @@ sub register_autopatch {
     if (-e $patch) {
     if (-e $patch) {
         # Add auto_patch to series file
         # Add auto_patch to series file
         if (not $has_patch) {
         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
                 # Registering the new patch with quilt requires some
                 # trickery: reverse-apply the patch, import it, apply it
                 # trickery: reverse-apply the patch, import it, apply it
                 # again with quilt this time
                 # again with quilt this time
@@ -229,6 +231,10 @@ sub register_autopatch {
                 $self->run_quilt($dir, ['import', "debian/patches/$auto_patch"],
                 $self->run_quilt($dir, ['import', "debian/patches/$auto_patch"],
                                  wait_child => 1, to_file => '/dev/null');
                                  wait_child => 1, to_file => '/dev/null');
                 $self->run_quilt($dir, ['push'], 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);
             open(APPLIED, ">>", $applied) || syserr(_g("cannot write %s"), $applied);
             print APPLIED "$auto_patch\n";
             print APPLIED "$auto_patch\n";