I need to compile a testsuite like this: shell_build_command = &join("configure --with-lib-mpi=", &test_prefix(), "gmake")
But MTT errors out with: Building Shell Evaluating: &join("configure --with-lib-mpi=", &test_prefix(), "gmake") Got name: test_prefix Got args: _do: $ret = MTT::Values::Functions::test_prefix() &test_prefix returning: my_mpi/install/dir String now: &join("configure --with-lib-mpi=", my_mpi/install/dir, "gmake") Got name: join Got args: "configure --with-lib-mpi=", my_mpi/install/dir, "gmake" _do: $ret = MTT::Values::Functions::join("configure --with-lib-mpi=", my_mpi/install/dir, "gmake") Bareword found where operator expected at (eval 33) line 1, near "/opt/mtt" (Missing operator before tt?) Bareword found where operator expected at (eval 33) line 1, near "1.3a1r12364" (Missing operator before a1r12364?) *** ERROR: Module aborted: MTT::Test::Build::Shell:Build: *** ERROR: Could not evaluate: $ret = MTT::Values::Functions::join("configure --with-lib-mpi=", my_mpi/install/dir, "gmake"): syntax error at (eval 33) line 1, near "/opt/mtt" It looks like EvaluateString does not like the slashes, because something silly like this doesn't give me the syntax error: shell_build_command = &join("configure --with-lib-mpi=", &test_np(), "gmake") Note: Below is a patch to give Build.pm visibility of test_prefix(), though this will also produce the error: &join("configure --with-lib-mpi=", &shell("pwd"), "gmake") -Ethan Index: MTT/Test/Build.pm =================================================================== --- MTT/Test/Build.pm (revision 410) +++ MTT/Test/Build.pm (working copy) @@ -251,6 +251,10 @@ } } + # Some test suites require knowledge of where + # the MPI library is at the build stage + $MTT::Test::Run::test_prefix = $mpi_install->{installdir}; + # Process setenv, unsetenv, prepend-path, and append-path -- for # both the MPI that we're building with and the section of the ini # file that we're building.