I haven't tested this patch, but it will probably work.

-- 
see shy jo
From 49281a1503549efdae30e5262f166eced711ffd7 Mon Sep 17 00:00:00 2001
From: Joey Hess <[email protected]>
Date: Thu, 7 Jun 2012 12:00:37 -0400
Subject: [PATCH] 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.
---
 debian/changelog |    8 ++++++++
 dh               |   10 ++++++++++
 2 files changed, 18 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 3c90023..49a4eb8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+debhelper (9.20120529) UNRELEASED; urgency=low
+
+  * 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
+
+ -- Joey Hess <[email protected]>  Thu, 07 Jun 2012 11:58:03 -0400
+
 debhelper (9.20120528) unstable; urgency=low
 
   * dh_installcatalogs: Turn /etc/sgml/$package.cat into conffiles
diff --git a/dh b/dh
index 3e6ccf4..17919dc 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);
 }
 
-- 
1.7.10

Attachment: signature.asc
Description: Digital signature

Reply via email to