From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2006-11-02 14:18:06


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.