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