X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh;h=17919dce794f365c6028235c78c2a22cdc07b84f;hb=49281a1503549efdae30e5262f166eced711ffd7;hp=4d4e31eb898327289647df23ae5741be1a24b779;hpb=94a81dafd52cb0c2e5b1f8d05a905832eaec8bb5;p=debhelper.git diff --git a/dh b/dh index 4d4e31e..17919dc 100755 --- a/dh +++ b/dh @@ -331,7 +331,7 @@ if (! defined $sequence) { error "specify a sequence to run"; } # make -B causes the rules file to be run as a target. -# Also support completly empty override targets. +# Also support completely empty override targets. # Note: it's not safe to use rules_explicit_target before this check, # since it causes dh to be run. my $dummy_target="debhelper-fail-me"; @@ -662,11 +662,21 @@ foreach my $i (0..$stoppoint) { # the usual command. (The non-arch-specific override is tried first, # for simplest semantics; mixing it with arch-specific overrides # makes little sense.) + my @oldtodo=@todo; foreach my $override_type (undef, "arch", "indep") { @todo = run_override($override_type, $command, \@todo, @opts); } next unless @todo; + # No need to run the command for any packages handled by the + # override targets. + my %todo=map { $_ => 1 } @todo; + foreach my $package (@oldtodo) { + if (! $todo{$package}) { + push @opts, "-N$package"; + } + } + run($command, @opts); } @@ -819,7 +829,7 @@ sub rules_explicit_target { } else { if (!$not_a_target && /^([^#:]+)::?\s*(.*)$/) { - # Target is defined. NOTE: if it is a depenency of + # Target is defined. NOTE: if it is a dependency of # .PHONY it will be defined too but that's ok. # $2 contains target dependencies if any. $current_target = $1;