summaryrefslogtreecommitdiff
path: root/dh
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-06-07 12:00:37 -0400
committerJoey Hess <joey@kitenet.net>2012-06-07 12:01:05 -0400
commit49281a1503549efdae30e5262f166eced711ffd7 (patch)
treeb38e8f163feb4052e9581c469d3031afd8e407e1 /dh
parent6f7afa5148aebb6beb5f895801e636f67e64ec74 (diff)
dh: When there's an -indep override target without -arch, or vice versa, avoid acting on packages covered by the override target when running the command for packages not covered by it. Closes: #676462
Hmm, this is technically a behavior change, but hopefully not one anything could sanely depend on working like it used to.
Diffstat (limited to 'dh')
-rwxr-xr-xdh10
1 files changed, 10 insertions, 0 deletions
diff --git a/dh b/dh
index 3e6ccf42..17919dce 100755
--- a/dh
+++ b/dh
@@ -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);
}