]> git.donarmstrong.com Git - debhelper.git/commitdiff
Use Dpkg::BuildFlags module directly in set_buildflags().
authorModestas Vainius <modax@debian.org>
Sat, 18 Jun 2011 20:02:42 +0000 (23:02 +0300)
committerJoey Hess <joey@kitenet.net>
Sun, 19 Jun 2011 18:20:26 +0000 (14:20 -0400)
Dpkg::BuildFlags API is declared stable. It should be safe to use it directly
rather than dpkg-buildflags wrapper. In addition, do not do any
DEB_BUILD_OPTIONS=noopt handling in debhelper. Dpkg::BuildFlags already does it
for us.

Debian/Debhelper/Dh_Lib.pm

index 51f16a6f8226fc29b9258d3ec3b084b85fd1be5e..0c779d1f944bfea939a3d4829f6504530959d3ad 100644 (file)
@@ -901,32 +901,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};
        $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: $@";
+       }
+
+       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);
                }
        }
 }