$subject_val = "[MTT users] LD_LIBRARY_PATH setting in Run.pm masks a wrapper compiler issue"; include("../../include/msg-header.inc"); ?>
Subject: [MTT users] LD_LIBRARY_PATH setting in Run.pm masks a wrapper compiler issue
From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2008-05-05 14:47:23
Line 386 of MTT/Test/Run.pm sets LD_LIBRARY_PATH. This
appears to have masked a problem in my wrapper compiler
(missing -R/foo/lib flags).
if ($mpi_install->{libdir}) {
if (exists($ENV{LD_LIBRARY_PATH})) {
$ENV{LD_LIBRARY_PATH} = "$mpi_install->{libdir}:" .
$ENV{LD_LIBRARY_PATH};
} else {
$ENV{LD_LIBRARY_PATH} = $mpi_install->{libdir};
}
}
Is the rationale for setting LD_LIBRARY_PATH for the
mpirun's the same as the rationale described below (from
GNU_Install.pm)?
my %ENV_SAVE = %ENV;
$ENV{TMPDIR} = "$config->{installdir}/tmp";
mkdir($ENV{TMPDIR}, 0777);
# The intent here is just to ensure that the LD_LIBRARY_PATH
# in the environment does not point to shared libraries
# outside of MTT's scope that would interfere with "make
# check" (e.g., another libmpi.so outside of MTT). Just
# prepend our own $libdir to LD_LIBRARY_PATH and hope that
# that's Good Enough. :-)
if (exists($ENV{LD_LIBRARY_PATH})) {
$ENV{LD_LIBRARY_PATH} = "$config->{libdir}:$ENV{LD_LIBRARY_PATH}";
} else {
$ENV{LD_LIBRARY_PATH} = "$config->{libdir}";
}
If so, could we make MTT a little smarter. E.g., actually
check for a libmpi.so (and/or other possibly conflicting
DSOs), and if there's no conflict then skip the
LD_LIBRARY_PATH setting. (This way a wrapper compiler issue
is not masked.)
-Ethan