|
|
@@ -12,16 +12,16 @@ sub parse {
|
|
|
|
|
|
my %opts;
|
|
|
|
|
|
- foreach (split(/[\s,]+/, $env)) {
|
|
|
- # FIXME: This is pending resolution of Debian bug #430649
|
|
|
- /^([a-z][a-z0-9_-]*)(=(\w*))?$/;
|
|
|
+ foreach (split(/\s+/, $env)) {
|
|
|
+ unless (/^([a-z][a-z0-9_-]*)(=(\S*))?$/) {
|
|
|
+ warning(_g("invalid flag in DEB_BUILD_OPTIONS: %s"), $_);
|
|
|
+ next;
|
|
|
+ }
|
|
|
|
|
|
my ($k, $v) = ($1, $3 || '');
|
|
|
|
|
|
# Sanity checks
|
|
|
- if (!$k) {
|
|
|
- next;
|
|
|
- } elsif ($k =~ /^(noopt|nostrip|nocheck)$/ && length($v)) {
|
|
|
+ if ($k =~ /^(noopt|nostrip|nocheck)$/ && length($v)) {
|
|
|
$v = '';
|
|
|
} elsif ($k eq 'parallel' && $v !~ /^-?\d+$/) {
|
|
|
next;
|
|
|
@@ -37,18 +37,15 @@ sub set {
|
|
|
my ($opts, $overwrite) = @_;
|
|
|
$overwrite = 1 if not defined($overwrite);
|
|
|
|
|
|
- my $env = $overwrite ? '' : $ENV{DEB_BUILD_OPTIONS}||'';
|
|
|
- if ($env) { $env .= ',' }
|
|
|
-
|
|
|
+ my $new = {};
|
|
|
+ $new = parse() unless $overwrite;
|
|
|
while (my ($k, $v) = each %$opts) {
|
|
|
- if ($v) {
|
|
|
- $env .= "$k=$v,";
|
|
|
- } else {
|
|
|
- $env .= "$k,";
|
|
|
- }
|
|
|
+ $new->{$k} = $v;
|
|
|
}
|
|
|
|
|
|
- $ENV{DEB_BUILD_OPTIONS} = $env if $env;
|
|
|
+ my $env = join(" ", map { $new->{$_} ? $_ . "=" . $new->{$_} : $_ } keys %$new);
|
|
|
+
|
|
|
+ $ENV{DEB_BUILD_OPTIONS} = $env;
|
|
|
return $env;
|
|
|
}
|
|
|
|