I think there's an issue with escaping quotes either in DoCommand.pm,
though there's an easy workaround.
The problem is the following .ini param will not work for me without a
minor change to OMPI:
configure_arguments = CFLAGS="-xarch=v8plusa -xO5"
Here's a simple test program that illustrates the issue:
---
$ perl -I<path_to_your_mtt>/trunk/lib -d ./test_DoCommand
$ cat test_DoCommand
#!/usr/bin/perl
use MTT::DoCommand;
# works!
MTT::DoCommand::Cmd(0, qw{./configure CFLAGS="-g -xarch=v8plusa"
--enable-picky --enable-debug --disable-mpi-f90});
# doesn't work
MTT::DoCommand::Cmd(0, "./configure CFLAGS="-g -xarch=v8plusa"
--enable-picky --enable-debug --disable-mpi-f90"});
---
Here's the workaround that seems to do the trick:
em162155_at_burl-ct-v440-6-a /workspace/em162155/hpc/mtt/trunk 234> svn
diff lib/MTT/MPI/Install/OMPI.pm
Index: lib/MTT/MPI/Install/OMPI.pm
===================================================================
--- lib/MTT/MPI/Install/OMPI.pm (revision 185)
+++ lib/MTT/MPI/Install/OMPI.pm (working copy)
@@ -59,7 +59,7 @@
$ret->{bindir} = "$ret->{installdir}/bin";
$ret->{libdir} = "$ret->{installdir}/lib";
- $x = MTT::DoCommand::Cmd(1, "$config->{configdir}/configure
$config->{configure_arguments} --prefix=$ret->{installdir}");
+ $x = MTT::DoCommand::Cmd(1, ("$config->{configdir}/configure",
$config->{configure_arguments}, "--prefix=$ret->{installdir}"));
$stdout = $x->{stdout} ? "--- Configure stdout/stderr
---\n$x->{stdout}" :
undef;
if ($x->{status} != 0) {
---
I think I would favor a revision to lines 101-133 in DoCommand because
it seems more natural to write DoCommand("foo bar baz"), then
DoCommand(foo, bar, baz). But I need to think more about how to do it.
-Ethan
|