22
22
my %repeats ;
23
23
my %evals ;
24
24
my @command_vars ;
25
+ my %command_tmp_vars ;
25
26
26
27
# default opts
27
28
my %default = (
@@ -901,14 +902,22 @@ sub set_eval {
901
902
}
902
903
903
904
sub set_variable {
904
- my ($lvalue , $rvalue ) = @_ ;
905
+ my ($lvalue , $rvalue , $command ) = @_ ;
905
906
907
+ # Command line variables override all others
908
+ if (defined ($command_tmp_vars {$lvalue })) {
909
+ return ;
910
+ }
906
911
if ($rvalue =~ / ^\s *$ / ) {
907
912
delete $variable {$lvalue };
908
913
} else {
909
914
$rvalue = process_variables($rvalue );
910
915
$variable {$lvalue } = $rvalue ;
911
916
}
917
+
918
+ if (defined ($command )) {
919
+ $command_tmp_vars {$lvalue } = 1;
920
+ }
912
921
}
913
922
914
923
sub process_compare {
@@ -4267,6 +4276,11 @@ sub die_usage {
4267
4276
-D TEST_TYPE[2]=build
4268
4277
Sets TEST_TYPE of test 2 to "build"
4269
4278
4279
+ It can also override all temp variables.
4280
+ -D USE_TEMP_DIR:=1
4281
+ Will override all variables that use
4282
+ "USE_TEMP_DIR="
4283
+
4270
4284
EOF
4271
4285
;
4272
4286
}
@@ -4277,7 +4291,11 @@ sub die_usage {
4277
4291
die_usage if ($#ARGV < 1);
4278
4292
my $val = shift ;
4279
4293
4280
- $command_vars [$#command_vars + 1] = $val ;
4294
+ if ($val =~ m / (.*?):=(.*)$ / ) {
4295
+ set_variable($1 , $2 , 1);
4296
+ } else {
4297
+ $command_vars [$#command_vars + 1] = $val ;
4298
+ }
4281
4299
4282
4300
} elsif ( $ARGV [0] eq " -h" ) {
4283
4301
die_usage;
0 commit comments