New build control
[buildfarm-client.git] / run_build
index 14842ab646cbf6dc3debb08c9d92b89635118937..292de22e66c554206fd733dd7893c9c329f18a5a 100755 (executable)
--- a/run_build
+++ b/run_build
@@ -1035,16 +1035,30 @@ sub make_test
 {
     return unless step_wanted('test');
     print time_str(),"running make test ...\n" if $verbose;
+
     my $tests_range = $EximBuild::conf{range_num_tests} || "1 4";
+    # backwards compat for build-farm.conf from before this support was added
+    $EximBuild::conf{test_configure_env} = {} unless exists $EximBuild::conf{test_configure_env};
+    $EximBuild::conf{test_configure_args} = [] unless exists $EximBuild::conf{test_configure_args};
+    $EximBuild::conf{test_run_args} = "" unless exists $EximBuild::conf{test_run_args};
+
     my @makeout;
-    @makeout =`(cd $exim/test
-                autoconf && ./configure && $make )2>&1 `;
+    my %saved_env = %ENV;
+    foreach my $k (keys %{$EximBuild::conf{test_configure_env}}) {
+      $ENV{$k} = $EximBuild::conf{test_configure_env}{$k};
+    }
+    my $conf_args = '';
+    foreach (@{$EximBuild::conf{test_configure_args}}) {
+      s/'/'"'"'/g;
+      $conf_args .= " '${_}'";
+    }
+    @makeout =`(cd $exim/test && ./configure $conf_args && $make )2>&1 `;
+    %ENV = %saved_env;
+
     my $status = $? >>8;
     unless($status)
     {
-      my @tmp = `(WORKDIR=\$PWD
-                  cd $exim/test
-                  ./runtest \$WORKDIR/$exim/src/build-*/exim -CONTINUE $tests_range )2>&1`;
+      my @tmp = `(cd $exim/test && ./runtest -CONTINUE $EximBuild::conf{test_run_args} $tests_range )2>&1`;
       $status = $? >>8;
       push @makeout, @tmp;
       # Prepend the failed summary log outputs for ease of reading
@@ -1169,7 +1183,8 @@ sub configure
         @tmp = `echo "Hardcoded Exim user info:"; id $exim_user
           cd $exim && perl -pi -e 's/^EXIM_USER=.*/EXIM_USER=$exim_user/' $local_conf`;
         push @confout, @tmp;
-        my $me = `whoami`; chomp $me;
+        #my $me = `whoami`; chomp $me;
+       my $me = getpwuid($>) // die "$0: getpwuid($>): $!\n";
         @tmp = `echo "Build Farm user info:"; id $me
           cd $exim && perl -pi -e 's/^# CONFIGURE_OWNER=\$/CONFIGURE_OWNER=$me/' $local_conf`;
         push @confout, @tmp;
@@ -1197,7 +1212,7 @@ sub configure
         push @confout, @tmp;
         # Build the config_opts array to send to the server
         chomp @tmp;
-        my @config_opts = grep s/(?:LOOKUP_|EXPERIMENTAL_|USE_)(\S+)=.*/$1/,
+        my @config_opts = grep s/(?:LOOKUP_|EXPERIMENTAL_|SUPPORT_|USE_)(\S+)=.*/$1/,
                           @tmp;
         push @config_opts, grep s/^(?:EXIM_)(PERL|PYTHON)=.*/$1/,
                            @tmp;