X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=470c0fd9fde00d1b02d26b93e37530ee1ffc2d80;hb=12a39369798685e87a0e67d528bc997eb71d7972;hp=a5470d4d9b3bc94d44b03122b6c64607def0e146;hpb=39af01e68918c91d006674fd1907e61976c69cb8;p=dgit.git diff --git a/dgit b/dgit index a5470d4d..470c0fd9 100755 --- a/dgit +++ b/dgit @@ -292,6 +292,7 @@ sub dgit_privdir () { sub bpd_abs () { my $r = $buildproductsdir; $r = "$maindir/$r" unless $r =~ m{^/}; + return $r; } sub branch_gdr_info ($$) { @@ -4757,6 +4758,8 @@ sub cmd_push { sub cmd_push_source { prep_push(); + fail "dgit push-source: --include-dirty/--ignore-dirty does not make". + "sense with push-source!" if $includedirty; if ($changesfile) { my $changes = parsecontrol("$buildproductsdir/$changesfile", "source changes file"); @@ -5651,7 +5654,8 @@ sub unpack_playtree_linkorigs ($$) { my ($upstreamversion, $fn) = @_; # calls $fn->($leafname); - opendir QFD, bpd_abs(); + my $bpd_abs = bpd_abs(); + opendir QFD, $bpd_abs or fail "buildproductsdir: $bpd_abs: $!"; while ($!=0, defined(my $b = readdir QFD)) { my $f = bpd_abs()."/".$b; { @@ -6179,6 +6183,10 @@ sub changesopts () { return (changesopts_initial(), changesopts_version()); } +# return values from massage_dbp_args are one or both of these flags +sub WANTSRC_SOURCE () { 01; } # caller should build source (separately) +sub WANTSRC_BUILDER () { 02; } # caller should run dpkg-buildpackage + sub massage_dbp_args ($;$) { my ($cmd,$xargs) = @_; # We need to: @@ -6192,16 +6200,11 @@ sub massage_dbp_args ($;$) { # unless we're not doing a split build and want dpkg-source # as cleanmode, in which case we can do nothing # - # return values: - # 0 - source will NOT need to be built separately by caller - # +1 - source will need to be built separately by caller - # +2 - source will need to be built separately by caller AND - # dpkg-buildpackage should not in fact be run at all! 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) { $clean_using_builder = 1; - return 0; + return WANTSRC_BUILDER; } # -nc has the side effect of specifying -b if nothing else specified # and some combinations of -S, -b, et al, are errors, rather than @@ -6217,12 +6220,12 @@ sub massage_dbp_args ($;$) { } push @$cmd, '-nc'; #print STDERR "MASS1 ",Dumper($cmd, $xargs, $dmode); - my $r = 0; + my $r = WANTSRC_BUILDER; if ($need_split_build_invocation) { printdebug "massage split $dmode.\n"; - $r = $dmode =~ m/[S]/ ? +2 : - $dmode =~ y/gGF/ABb/ ? +1 : - $dmode =~ m/[ABb]/ ? 0 : + $r = $dmode =~ m/[S]/ ? WANTSRC_SOURCE : + $dmode =~ y/gGF/ABb/ ? WANTSRC_SOURCE | WANTSRC_BUILDER : + $dmode =~ m/[ABb]/ ? WANTSRC_BUILDER : die "$dmode ?"; } printdebug "massage done $r $dmode.\n"; @@ -6293,12 +6296,12 @@ END sub midbuild_checkchanges_vanilla ($) { my ($wantsrc) = @_; - midbuild_checkchanges() if $wantsrc == 1; + midbuild_checkchanges() if $wantsrc == (WANTSRC_SOURCE|WANTSRC_BUILDER); } sub postbuild_mergechanges_vanilla ($) { my ($wantsrc) = @_; - if ($wantsrc == 1) { + if ($wantsrc == (WANTSRC_SOURCE|WANTSRC_BUILDER)) { in_bpd { postbuild_mergechanges(undef); }; @@ -6311,13 +6314,13 @@ sub cmd_build { build_prep_early(); my @dbp = (@dpkgbuildpackage, qw(-us -uc), changesopts_initial(), @ARGV); my $wantsrc = massage_dbp_args \@dbp; - if ($wantsrc > 0) { + if ($wantsrc & WANTSRC_SOURCE) { build_source(); midbuild_checkchanges_vanilla $wantsrc; } else { build_prep(); } - if ($wantsrc < 2) { + if ($wantsrc & WANTSRC_BUILDER) { push @dbp, changesopts_version(); maybe_apply_patches_dirtily(); runcmd_ordryrun_local @dbp; @@ -6384,7 +6387,7 @@ sub cmd_gbp_build { } } - if ($wantsrc > 0) { + if ($wantsrc & WANTSRC_SOURCE) { build_source(); midbuild_checkchanges_vanilla $wantsrc; } else { @@ -6394,7 +6397,7 @@ sub cmd_gbp_build { build_prep(); } maybe_unapply_patches_again(); - if ($wantsrc < 2) { + if ($wantsrc & WANTSRC_BUILDER) { push @cmd, changesopts(); runcmd_ordryrun_local @cmd, @ARGV; } @@ -6863,7 +6866,7 @@ sub parseopts () { } elsif (m/^--(gbp|dpm)$/s) { push @ropts, "--quilt=$1"; $quilt_mode = $1; - } elsif (m/^--ignore-dirty$/s) { + } elsif (m/^--(?:ignore|include)-dirty$/s) { push @ropts, $_; $includedirty = 1; } elsif (m/^--no-quilt-fixup$/s) { @@ -7066,6 +7069,9 @@ sub parseopts_late_defaults () { $need_split_build_invocation ||= quiltmode_splitbrain(); + fail "dgit: --include-dirty is not supported in split view quilt mode" + if $split_brain && $includedirty; + if (!defined $cleanmode) { local $access_forpush; $cleanmode = access_cfg('clean-mode', 'RETURN-UNDEF');