X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=4d31cd606b568e4b7df586de3b802ada2a9a909d;hb=57b7ccba1b4e833e9ffc91efe0afe550138f530d;hp=b22d6ab3f25a386194d08d4449de504dd53d6fe5;hpb=35786bae6f659ab4c0595c829e2b436e0c292d1c;p=dgit.git diff --git a/dgit b/dgit index b22d6ab3..4d31cd60 100755 --- a/dgit +++ b/dgit @@ -200,6 +200,10 @@ sub deliberately_not_fast_forward () { } } +sub quiltmode_splitbrain () { + $quilt_mode =~ m/gbp|dpm|unapplied/; +} + #---------- remote protocol support, common ---------- # remote push initiator/responder protocol: @@ -1984,10 +1988,14 @@ END my $format = getfield $dsc, 'Format'; printdebug "format $format\n"; + if (madformat($format)) { # user might have not used dgit build, so maybe do this now: commit_quilty_patch(); } + + die 'xxx fast forward (should not depend on quilt mode, but will always be needed if we did $split_brain)' if $split_brain; + check_not_dirty(); changedir $ud; progress "checking that $dscfn corresponds to HEAD"; @@ -2579,7 +2587,7 @@ sub quiltify_splitbrain ($$$$$$) { runcmd shell_cmd 'exec >/dev/null', @gbppq, qw(import); # gbp-pq import creates a fresh branch; push back to dgit-view runcmd @git, qw(update-ref refs/heads/dgit-view HEAD); - runcmd @git, qw(checkout dgit-view); + runcmd @git, qw(checkout -q dgit-view); } if (($diffbits->{H2O} & 02) && # user has modified .gitignore !($diffbits->{O2A} & 02)) { # patches do not change .gitignore @@ -2624,7 +2632,6 @@ END runcmd @git, qw(update-ref -m), $cachekey, "refs/$splitbraincache", $dgitview; - die 'xxx fast forward (should not depend on quilt mode, but will always be needed if we did $split_brain)'; changedir '.git/dgit/unpack/work'; } @@ -2861,6 +2868,8 @@ sub build_maybe_quilt_fixup () { quilt_fixup_multipatch($clogp, $headref, $upstreamversion); } + die 'bug' if $split_brain && !$need_split_build_invocation; + changedir '../../../..'; runcmd_ordryrun_local @git, qw(pull --ff-only -q .git/dgit/unpack/work master); @@ -3038,7 +3047,7 @@ END close $fakedsc or die $!; my $splitbrain_cachekey; - if ($quilt_mode =~ m/gbp|dpm|unapplied/) { + if (quiltmode_splitbrain()) { # we look in the reflog of dgit-intern/quilt-cache # we look for an entry whose message is the key for the cache lookup my @cachekey = (qw(dgit), $our_version); @@ -3173,7 +3182,7 @@ END push @failsuggestion, "Maybe you need to specify one of". " --quilt=gbp --quilt=dpm --quilt=unapplied ?"; - if ($splitbrain_cachekey) { + if (quiltmode_splitbrain()) { quiltify_splitbrain($clogp, $unapplied, $headref, $diffbits, \%editedignores, $splitbrain_cachekey); @@ -3216,10 +3225,14 @@ sub quilt_fixup_editor () { #----- other building ----- -our $suppress_clean; +our $clean_using_builder; +# ^ tree is to be cleaned by dpkg-source's builtin idea that it should +# clean the tree before building (perhaps invoked indirectly by +# whatever we are using to run the build), rather than separately +# and explicitly by us. sub clean_tree () { - return if $suppress_clean; + return if $clean_using_builder; if ($cleanmode eq 'dpkg-source') { runcmd_ordryrun_local @dpkgbuildpackage, qw(-T clean); } elsif ($cleanmode eq 'dpkg-source-d') { @@ -3324,7 +3337,7 @@ sub massage_dbp_args ($;$) { debugcmd '#massaging#', @$cmd if $debuglevel>1; #print STDERR "MASS0 ",Dumper($cmd, $xargs, $need_split_build_invocation); if ($cleanmode eq 'dpkg-source' && !$need_split_build_invocation) { - $suppress_clean = 1; + $clean_using_builder = 1; return 0; } # -nc has the side effect of specifying -b if nothing else specified @@ -3384,7 +3397,7 @@ sub cmd_gbp_build { if ($wantsrc > 0) { build_source(); } else { - if (!$suppress_clean) { + if (!$clean_using_builder) { push @cmd, '--git-cleaner=true'; } build_prep(); @@ -3404,7 +3417,7 @@ sub cmd_git_build { cmd_gbp_build(); } # compatibility with <= 1.0 sub build_source { if ($cleanmode =~ m/^dpkg-source/) { # dpkg-source will clean, so we shouldn't - $suppress_clean = 1; + $clean_using_builder = 1; } build_prep(); $sourcechanges = changespat $version,'source'; @@ -3765,6 +3778,8 @@ if (!defined $quilt_mode) { $quilt_mode = $1; } +$need_split_build_invocation ||= quiltmode_splitbrain(); + if (!defined $cleanmode) { local $access_forpush; $cleanmode = access_cfg('clean-mode', 'RETURN-UNDEF');