The following commit has been merged in the master branch:
commit 68a4a0b3ca958c0bd47abac27219666d2f7264e8
Author: Guillem Jover <guil...@debian.org>
Date:   Thu Jul 29 05:02:09 2010 +0200

    dpkg-buildpackage: Switch build option tracking to a bitmask variable

diff --git a/scripts/dpkg-buildpackage.pl b/scripts/dpkg-buildpackage.pl
index 0ac64e5..89b8efe 100755
--- a/scripts/dpkg-buildpackage.pl
+++ b/scripts/dpkg-buildpackage.pl
@@ -112,7 +112,7 @@ if ( ( ($ENV{GNUPGHOME} && -e $ENV{GNUPGHOME})
 }
 
 my ($admindir, $signkey, $forcesigninterface, $usepause, $noclean,
-    $cleansource, $binaryonly, $sourceonly, $since, $maint,
+    $cleansource, $since, $maint,
     $changedby, $desc, $parallel);
 my $checkbuilddep = 1;
 my $signsource = 1;
@@ -123,6 +123,25 @@ my $call_target = '';
 my $call_target_as_root = 0;
 my (@checkbuilddep_opts, @changes_opts, @source_opts);
 
+use constant BUILD_DEFAULT    => 1;
+use constant BUILD_SOURCE     => 2;
+use constant BUILD_ARCH_DEP   => 4;
+use constant BUILD_ARCH_INDEP => 8;
+use constant BUILD_BINARY     => BUILD_ARCH_DEP | BUILD_ARCH_INDEP;
+use constant BUILD_ALL        => BUILD_BINARY | BUILD_SOURCE;
+my $include = BUILD_ALL | BUILD_DEFAULT;
+
+sub build_normal() { return ($include & BUILD_ALL) == BUILD_ALL; }
+sub build_sourceonly() { return $include == BUILD_SOURCE; }
+sub build_binaryonly() { return !($include & BUILD_SOURCE); }
+sub build_opt() {
+    return (($include == BUILD_BINARY) ? '-b' :
+            (($include == BUILD_ARCH_DEP) ? '-B' :
+             (($include == BUILD_ARCH_INDEP) ? '-A' :
+              (($include == BUILD_SOURCE) ? '-S' :
+               internerr("build_opt called with include=$include")))));
+}
+
 while (@ARGV) {
     $_ = shift @ARGV;
 
@@ -178,22 +197,26 @@ while (@ARGV) {
     } elsif (/^-nc$/) {
        $noclean = 1;
     } elsif (/^-b$/) {
-       $binaryonly = '-b';
+       build_sourceonly && usageerr(_g("cannot combine %s and %s"), $_, "-S");
+       $include = BUILD_BINARY;
        push @changes_opts, '-b';
        @checkbuilddep_opts = ();
        $binarytarget = 'binary';
     } elsif (/^-B$/) {
-       $binaryonly = '-B';
+       build_sourceonly && usageerr(_g("cannot combine %s and %s"), $_, "-S");
+       $include = BUILD_ARCH_DEP;
        push @changes_opts, '-B';
        @checkbuilddep_opts = ('-B');
        $binarytarget = 'binary-arch';
     } elsif (/^-A$/) {
-       $binaryonly = '-A';
+       build_sourceonly && usageerr(_g("cannot combine %s and %s"), $_, "-S");
+       $include = BUILD_ARCH_INDEP;
        push @changes_opts, '-A';
        @checkbuilddep_opts = ();
        $binarytarget = 'binary-indep';
     } elsif (/^-S$/) {
-       $sourceonly = '-S';
+       build_binaryonly && usageerr(_g("cannot combine %s and %s"), build_opt, 
"-S");
+       $include = BUILD_SOURCE;
        push @changes_opts, '-S';
        @checkbuilddep_opts = ('-B');
     } elsif (/^-v(.*)$/) {
@@ -214,12 +237,9 @@ while (@ARGV) {
     }
 }
 
-if ($binaryonly and $sourceonly) {
-    usageerr(_g("cannot combine %s and %s"), $binaryonly, $sourceonly);
-}
 if ($noclean) {
     # -nc without -b/-B/-A/-S implies -b
-    $binaryonly = '-b' unless ($binaryonly or $sourceonly);
+    $include = BUILD_BINARY if ($include & BUILD_DEFAULT);
 }
 
 if ($< == 0) {
@@ -310,7 +330,7 @@ while ($_ = <$arch_env>) {
 close $arch_env or subprocerr('dpkg-architecture');
 
 my $arch;
-unless ($sourceonly) {
+unless (build_sourceonly) {
     $arch = mustsetvar($ENV{'DEB_HOST_ARCH'}, _g('host architecture'));
 } else {
     $arch = 'source';
@@ -346,7 +366,7 @@ if ($checkbuilddep) {
        warning(_g("Build dependencies/conflicts unsatisfied; aborting."));
        warning(_g("(Use -d flag to override.)"));
 
-       if ($sourceonly) {
+       if (build_sourceonly) {
            warning(_g("This is currently a non-fatal warning with -S, but"));
            warning(_g("will probably become fatal in the future."));
        } else {
@@ -369,7 +389,7 @@ if ($call_target) {
 unless ($noclean) {
     withecho(@rootcommand, @debian_rules, 'clean');
 }
-unless ($binaryonly) {
+unless (build_binaryonly) {
     warning(_g("it is a bad idea to generate a source package " .
                "without cleaning up first, it might contain undesired " .
                "files.")) if $noclean;
@@ -377,18 +397,18 @@ unless ($binaryonly) {
     withecho('dpkg-source', @source_opts, '-b', $dir);
     chdir($dir) or syserr("chdir $dir");
 }
-unless ($sourceonly) {
+unless (build_sourceonly) {
     withecho(@debian_rules, 'build');
     withecho(@rootcommand, @debian_rules, $binarytarget);
 }
 if ($usepause &&
-    ($signchanges || ( !$binaryonly && $signsource )) ) {
+    ($signchanges || (!build_binaryonly && $signsource))) {
     print _g("Press the return key to start signing process\n");
     getc();
 }
 
 my $signerrors;
-unless ($binaryonly) {
+unless (build_binaryonly) {
     if ($signsource && signfile("$pv.dsc")) {
        $signerrors = _g("Failed to sign .dsc and .changes file");
        $signchanges = 0;

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to