diff --git a/autogen.sh b/autogen.sh index 84532d7541..640c7dd1f7 100755 --- a/autogen.sh +++ b/autogen.sh @@ -490,6 +490,11 @@ EOF mv configure.new configure chmod a+x configure fi + echo " ++ preopen error masking ib libltdl" + if test -r opal/libltdl/loaders/preopen.c; then + patch -N -p0 < config/libltdl-preopen-error.patch + rm -f opal/libltdl/loaders/preopen.c.rej + fi # See # http://lists.gnu.org/archive/html/bug-libtool/2008-05/msg00045.html. diff --git a/config/Makefile.am b/config/Makefile.am index 1e9336b408..f8a3351ebc 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -9,7 +9,7 @@ # University of Stuttgart. All rights reserved. # Copyright (c) 2004-2005 The Regents of the University of California. # All rights reserved. -# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -21,6 +21,7 @@ EXTRA_DIST = \ distscript.csh \ ompi_get_version.m4sh \ libltdl_dlopen_global.diff \ + libltdl-preopen-error.diff \ lt-sun-fortran.diff \ lt1522-pathCC.diff \ lt21a-pathCC.diff \ diff --git a/config/libltdl-preopen-error.patch b/config/libltdl-preopen-error.patch new file mode 100644 index 0000000000..68eecc5627 --- /dev/null +++ b/config/libltdl-preopen-error.patch @@ -0,0 +1,27 @@ +--- opal/libltdl/loaders/preopen.c.~1~ 2010-03-03 14:13:28.000000000 -0500 ++++ opal/libltdl/loaders/preopen.c 2010-03-05 17:57:11.000000000 -0500 +@@ -185,7 +185,24 @@ + } + } + ++#if 0 ++ /* Open MPI: This line is commented out because Open MPI does not ++ use the preopen functionality in libltdl at all -- so we never ++ need to see errors from this module. Additionally, this module ++ is usually invoked last in the sequence when trying to ++ lt_dlopenadvise() a DSO -- so if there was a real error when ++ opening that DSO (e.g., a symbol not found), setting the ++ FILE_NOT_FOUND error here will mask the real error. ++ ++ This error has been reported upstream to the Libtool maintainers; ++ they acknowledge that it is a problem but no one has come up with ++ a good general solution yet. This Open MPI-specific solution is ++ workable for us, but not workable as a general solution. Hence, ++ we patch in this "if 0" block in autogen.sh after Libtool ++ installs libltdl in the opal/ tree. ++ */ + LT__SETERROR (FILE_NOT_FOUND); ++#endif + + done: + return module;