Support tuning the tests ./configure
authorPhil Pennock <pdp@exim.org>
Sat, 15 Sep 2018 01:15:37 +0000 (18:15 -0700)
committerJeremy Harris <jgh@wizmail.org>
Sat, 27 Oct 2018 17:14:06 +0000 (18:14 +0100)
When OpenSSL headers are not in standard search paths, we can need to
adjust the configure for the tests.  We can adjust just `$ENV` but that
risks interactions with the Exim build itself.  Provide new tunables
to handle it instead.

build-farm.conf.template
run_build

index a2745d252f6a13407cfe90d708d56457a6300e20..9aed6b642eba02ffb7264242e798e2a7aba5417e 100644 (file)
@@ -220,6 +220,9 @@ our %conf =(
         qw()
     ],
 
         qw()
     ],
 
+    # Configuration tuning for test suite ./configure
+    test_configure_env =>{},
+    test_configure_args =>[],
 );
 
 if ($branch eq 'global')
 );
 
 if ($branch eq 'global')
index 04c7feeeb07ec86b9b9b152c42c29be363d3f016..2d2b1ef30de02f2a7286e2e9268af8dc4a9cead4 100755 (executable)
--- a/run_build
+++ b/run_build
@@ -1035,9 +1035,25 @@ sub make_test
 {
     return unless step_wanted('test');
     print time_str(),"running make test ...\n" if $verbose;
 {
     return unless step_wanted('test');
     print time_str(),"running make test ...\n" if $verbose;
+
     my $tests_range = $EximBuild::conf{range_num_tests} || "1 4";
     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};
+
     my @makeout;
     my @makeout;
-    @makeout =`(cd $exim/test && ./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 $status = $? >>8;
     unless($status)
     {