From: Joey Hess Date: Wed, 3 Nov 2010 02:48:01 +0000 (-0400) Subject: dh: Inhibit logging for commands run inside override targets X-Git-Tag: 8.1.0~23 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=76ef1cbd64829ee4a5156a5fc4b887bcba6b974f;p=debhelper.git dh: Inhibit logging for commands run inside override targets Note that only the overridden command is inhibited. I wanted to avoid a behavior change if a rules file runs other debhelper commands inside the target, and relies on the logging preventing them being run later on in the sequence. --- diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm index 3c23e09..fb83480 100644 --- a/Debian/Debhelper/Dh_Lib.pm +++ b/Debian/Debhelper/Dh_Lib.pm @@ -125,6 +125,8 @@ sub write_log { my $cmd=shift; my @packages=@_; + return if defined $ENV{DH_INHIBIT_LOG} && $cmd eq $ENV{DH_INHIBIT_LOG}; + foreach my $package (@packages) { my $ext=pkgext($package); my $log="debian/${ext}debhelper.log"; diff --git a/debian/changelog b/debian/changelog index a951865..a0ae5e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,9 @@ debhelper (8.1.0) UNRELEASED; urgency=low * Massive man page typography patch. Closes: #600883 (Thanks, David Prévot) * Explicitly build-depend on a new enough perl-base. Closes: #601188 + * dh: Inhibit logging when an override target runs the overridden command, + to avoid unexpected behavior if the command succeeded but the overall + target fails. Closes: #601037 -- Joey Hess Sat, 07 Aug 2010 11:27:24 -0400 diff --git a/dh b/dh index f267a32..d2771ab 100755 --- a/dh +++ b/dh @@ -635,6 +635,9 @@ sub run { # This passes the options through to commands called # inside the target. $ENV{DH_INTERNAL_OPTIONS}=join("\x1e", @options); + # Prevent commands called inside the target from + # logging. + $ENV{DH_INHIBIT_LOG}=$command; $command="debian/rules"; @options="override_".$override_command; } @@ -669,9 +672,9 @@ sub run { if (defined $override_command) { delete $ENV{DH_INTERNAL_OPTIONS}; - # Need to handle logging for overriden commands here, - # because the actual debhelper command may not have - # been run by the rules file target. + delete $ENV{DH_INHIBIT_LOG}; + # Update log for overridden command now that it has + # finished successfully. # (But avoid logging for dh_clean since it removes # the log earlier.) if ($override_command ne 'dh_clean') {