X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=38c1497f808cd9ec990a02a4b230ccad74c643df;hp=7ec09de85d5932edccdd4b1308f38b505aa41e69;hb=7121a993cd2206d3f5066e97ebbc397fe079c18f;hpb=81aaaee0875d911dca013460b1087e5b56922c0f diff --git a/dgit b/dgit index 7ec09de8..38c1497f 100755 --- a/dgit +++ b/dgit @@ -59,6 +59,7 @@ our %previously; our $existing_package = 'dpkg'; our $cleanmode; our $changes_since_version; +our $rmchanges; our $quilt_mode; our $quilt_modes_re = 'linear|smash|auto|nofix|nocheck'; our $we_are_responder; @@ -147,6 +148,11 @@ sub dscfn ($) { return srcfn($vsn,".dsc"); } +sub changespat ($;$) { + my ($vsn, $arch) = @_; + return "${package}_".(stripepoch $vsn)."_".($arch//'*').".changes"; +} + our $us = 'dgit'; initdebug(''); @@ -1997,12 +2003,11 @@ END } my $head = git_rev_parse('HEAD'); if (!$changesfile) { - my $multi = "$buildproductsdir/". - "${package}_".(stripepoch $cversion)."_multi.changes"; + my $multi = "$buildproductsdir/".changespat $cversion,'multi'; if (stat_exists "$multi") { $changesfile = $multi; } else { - my $pat = "${package}_".(stripepoch $cversion)."_*.changes"; + my $pat = changespat $cversion; my @cs = glob "$buildproductsdir/$pat"; fail "failed to find unique changes file". " (looked for $pat in $buildproductsdir, or $multi);". @@ -3009,6 +3014,16 @@ sub build_prep () { $package = getfield $clogp, 'Source'; $version = getfield $clogp, 'Version'; build_maybe_quilt_fixup(); + if ($rmchanges) { + my $pat = changespat $version; + foreach my $f (glob "$buildproductsdir/$pat") { + if (act_local()) { + unlink $f or fail "remove old changes file $f: $!"; + } else { + progress "would remove $f"; + } + } + } } sub changesopts_initial () { @@ -3106,7 +3121,7 @@ sub build_source { $suppress_clean = 1; } build_prep(); - $sourcechanges = "${package}_".(stripepoch $version)."_source.changes"; + $sourcechanges = changespat $version,'source'; $dscfn = dscfn($version); if ($cleanmode eq 'dpkg-source') { runcmd_ordryrun_local @dpkgbuildpackage, qw(-us -uc -S), @@ -3136,7 +3151,7 @@ sub cmd_build_source { sub cmd_sbuild { build_source(); changedir ".."; - my $pat = "${package}_".(stripepoch $version)."_*.changes"; + my $pat = changespat $version; if (act_local()) { stat_exists $dscfn or fail "$dscfn (in parent directory): $!"; stat_exists $sourcechanges @@ -3160,7 +3175,7 @@ sub cmd_sbuild { if $l =~ m/\.dsc$/; } runcmd_ordryrun_local @mergechanges, @changesfiles; - my $multichanges = "${package}_".(stripepoch $version)."_multi.changes"; + my $multichanges = changespat $version,'multi'; if (act_local()) { stat_exists $multichanges or fail "$multichanges: $!"; foreach my $cf (glob $pat) { @@ -3328,6 +3343,9 @@ sub parseopts () { } elsif (m/^--no-rm-on-error$/s) { push @ropts, $_; $rmonerror = 0; + } elsif (m/^--(no-)?rm-old-changes$/s) { + push @ropts, $_; + $rmchanges = !$1; } elsif (m/^--deliberately-($deliberately_re)$/s) { push @ropts, $_; push @deliberatelies, $&; @@ -3434,6 +3452,11 @@ if (!@ARGV) { my $cmd = shift @ARGV; $cmd =~ y/-/_/; +if (!defined $rmchanges) { + local $access_forpush; + $rmchanges = access_cfg_bool(0, 'rm-old-changes'); +} + if (!defined $quilt_mode) { local $access_forpush; $quilt_mode = cfg('dgit.force.quilt-mode', 'RETURN-UNDEF')