]> git.donarmstrong.com Git - debhelper.git/commitdiff
avoid infinite recursion
authorJoey Hess <joey@kitenet.net>
Tue, 14 Jun 2011 16:24:31 +0000 (12:24 -0400)
committerJoey Hess <joey@kitenet.net>
Tue, 14 Jun 2011 16:25:59 +0000 (12:25 -0400)
The makefile parse causes dh to be run recursively.

Before, dh would just immediatly fail with "unknown sequence", but
now it has to run the makefile parse to calculate the sequences, so an
earlier bailout is needed.

dh

diff --git a/dh b/dh
index 2241c648f478b8d965218b559fe62b27835a4294..59d5ee071fd6b6be4ef5428661f57928ff73f99f 100755 (executable)
--- a/dh
+++ b/dh
@@ -346,9 +346,12 @@ if (! defined $sequence) {
 }
 # make -B causes the rules file to be run as a target.
 # Also support completly empty override targets.
-# Note: it's not safe to use rules_explicit_target before this check.
+# 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";
 if ($sequence eq 'debian/rules' ||
-    $sequence =~ /^override_dh_/) {
+    $sequence =~ /^override_dh_/ ||
+    $sequence eq $dummy_target) {
        exit 0;
 }
 
@@ -814,7 +817,7 @@ sub rules_explicit_target {
                my $processing_targets = 0;
                my $not_a_target = 0;
                my $current_target;
-               open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules debhelper-fail-me 2>/dev/null |");
+               open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules $dummy_target 2>/dev/null |");
                while (<MAKE>) {
                        if ($processing_targets) {
                                if (/^# Not a target:/) {