From ae2b5cb9a5ea8106058230c2d7be7e9fea57442b Mon Sep 17 00:00:00 2001 From: "Heiko Schlittermann (HS12-RIPE)" Date: Fri, 21 Sep 2018 00:04:01 +0200 Subject: [PATCH] Make run_build more perlish --- run_build | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/run_build b/run_build index 2d2b1ef..6290e0c 100755 --- a/run_build +++ b/run_build @@ -1041,20 +1041,22 @@ sub make_test $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 %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 (@makeout, $status); + { + local %ENV = (%ENV, %{$EximBuild::conf{test_configure_env}}); + + open(my $make, '-|') or do { # Yeah, it *could* return undef, if we can't fork! + open(STDERR, '>&STDOUT') or die "$0: re-open STDERR to STDOUT: $!\n"; + chdir "$exim/test" or die "$0: chdir to '$exim/test': $!\n"; + 0 == system './configure', @{$EximBuild::conf{test_configure_args}} or die; + exec 'make'; + die "$0: exec make: $!\n"; + }; + @makeout = <$make>; + close($make) or die "$0: close make: $!\n"; + $status = $? >> 8; + }; - my $status = $? >>8; unless($status) { my @tmp = `(cd $exim/test && ./runtest -CONTINUE $tests_range )2>&1`; @@ -1511,4 +1513,3 @@ sub spawn } return $pid; } - -- 2.30.2