]> git.donarmstrong.com Git - debhelper.git/blobdiff - Debian/Debhelper/Dh_Lib.pm
Avoid writing debhelper log files in no-act mode. Closes: #640586
[debhelper.git] / Debian / Debhelper / Dh_Lib.pm
index 51f16a6f8226fc29b9258d3ec3b084b85fd1be5e..40c33e84722606c64b8afa293f3f65e2271cbaa1 100644 (file)
@@ -146,6 +146,8 @@ sub write_log {
        my $cmd=shift;
        my @packages=@_;
 
+       return if $dh{NO_ACT};
+
        foreach my $package (@packages) {
                my $log=logfile($package);
                open(LOG, ">>", $log) || error("failed to write to ${log}: $!");
@@ -157,6 +159,8 @@ sub write_log {
 sub commit_override_log {
        my @packages=@_;
 
+       return if $dh{NO_ACT};
+
        foreach my $package (@packages) {
                my @log=map { remove_override($_) } load_log($package);
                my $log=logfile($package);
@@ -901,32 +905,23 @@ sub cross_command {
 }
 
 # Sets environment variables from dpkg-buildflags. Avoids changing
-# any existing environment variables. Supports DEB_BUILD_OPTIONS=noopt.
+# any existing environment variables.
 sub set_buildflags {
-       # optimisation
-       return if $ENV{DH_INTERNAL_BUILDFLAGS};
+       return if $ENV{DH_INTERNAL_BUILDFLAGS} || compat(8);
        $ENV{DH_INTERNAL_BUILDFLAGS}=1;
 
-       my $noopt=$ENV{DEB_BUILD_OPTIONS}=~/noopt/;
-
-       my @shell=`dpkg-buildflags --export`;
-       foreach my $line (@shell) {
-               chomp $line;
-               if ($line=~/^export\s+([^=]+)=(["'])(.*)\2$/) {
-                       my $var=$1;
-                       my $val=$3;
-                       if ($noopt) {
-                               $val=$ENV{$var} if exists $ENV{$var};
-                               $val=~s/-O\d+/-O0/;
-                               $ENV{$var}=$val;
-                               next;
-                       }
-                       elsif (! exists $ENV{$var}) {
-                               $ENV{$var}=$val;
-                       }
-               }
-               else {
-                       warning "unparsable line from dpkg-buildflags: $line";
+       eval "use Dpkg::BuildFlags";
+       if ($@) {
+               warning "unable to load build flags: $@";
+               return;
+       }
+
+       my $buildflags = Dpkg::BuildFlags->new();
+       $buildflags->load_config();
+       foreach my $flag ($buildflags->list()) {
+               next unless $flag =~ /^[A-Z]/; # Skip flags starting with lowercase
+               if (! exists $ENV{$flag}) {
+                       $ENV{$flag} = $buildflags->get($flag);
                }
        }
 }