X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=dgit;h=6cf10fb4deb2f6add3a267532a207ab193f33e84;hb=f15061e0b700cc7102eee181b022070a18927039;hp=a443e5d3c93e0984991b0e678723b5f893bff507;hpb=e89cc82116db7648b78941ca028c24d0b5675ae4;p=dgit.git diff --git a/dgit b/dgit index a443e5d3..6cf10fb4 100755 --- a/dgit +++ b/dgit @@ -6199,41 +6199,44 @@ sub maybe_unapply_patches_again () { #----- other building ----- -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_check () { + # Not yet fully implemented. + # This function needs to not care about modified but tracked files. + # That was done by check_not_dirty, and by now we may have run + # the rules clean target which might modify tracked files (!) + if ($cleanmode =~ m{^check}) { + my @cmd = (@git, qw(clean -dn)); + push @cmd, qw(-x); + my $leftovers = cmdoutput @cmd; + if (length $leftovers) { + print STDERR $leftovers, "\n" or confess $!; + fail __ + "tree contains uncommitted files and --clean=check specified"; + } + } +} sub clean_tree () { - return if $clean_using_builder; - if ($cleanmode eq 'dpkg-source') { + # We always clean the tree ourselves, rather than leave it to the + # builder (dpkg-source, or soemthing which calls dpkg-source). + if ($cleanmode =~ m{^dpkg-source}) { + my @cmd = @dpkgbuildpackage; + push @cmd, qw(-d) if $cleanmode =~ m{^dpkg-source-d}; + push @cmd, qw(-T clean); maybe_apply_patches_dirtily(); - runcmd_ordryrun_local @dpkgbuildpackage, qw(-T clean); - } elsif ($cleanmode eq 'dpkg-source-d') { - maybe_apply_patches_dirtily(); - runcmd_ordryrun_local @dpkgbuildpackage, qw(-d -T clean); + runcmd_ordryrun_local @cmd; } elsif ($cleanmode eq 'git') { runcmd_ordryrun_local @git, qw(clean -xdf); } elsif ($cleanmode eq 'git-ff') { runcmd_ordryrun_local @git, qw(clean -xdff); - } elsif ($cleanmode eq 'check') { - my $leftovers = cmdoutput @git, qw(clean -xdn); - if (length $leftovers) { - print STDERR $leftovers, "\n" or confess $!; - fail __ - "tree contains uncommitted files and --clean=check specified"; - } + } elsif ($cleanmode =~ m{^check}) { + clean_tree_check(); } elsif ($cleanmode eq 'none') { } else { die "$cleanmode ?"; } } -sub clean_tree_check () { - # Not yet implemented. The lack of this is part of #910705. -} - sub cmd_clean () { badusage __ "clean takes no additional arguments" if @ARGV; notpushing(); @@ -6548,9 +6551,7 @@ sub cmd_gbp_build { build_source(); midbuild_checkchanges_vanilla $wantsrc; } else { - if (!$clean_using_builder) { - push @cmd, '--git-cleaner=true'; - } + push @cmd, '--git-cleaner=true'; } maybe_unapply_patches_again(); if ($wantsrc & WANTSRC_BUILDER) {