+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
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");
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
$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";