Add extra_rpaths to OpenMPI wrappers (#8687)

If the OpenMPI build finds the infiniband drivers in /usr/lib64, it adds
-Wl,-rpath -Wl,/usr/lib64 to the OpenMPI wrappers. If the wrappers are using
a compiler outside of /usr, and the OpenMPI wrappers are used to build software
outside of Spack, they will rpath /usr/lib64 into the executable which then has
GLIBC, GLIBCXX runtime errors due to it picking up GCC libraries in /usr/lib64.

This adds the directories specified in "extra_rpaths" to the OpenMPI wrappers,
which allows them to use the correct compiler when invoked outside of Spack
builds.
This commit is contained in:
Jon Rood 2018-07-30 13:02:09 -06:00 committed by scheibelp
parent 13cf6d55e4
commit 15d96f0166

View File

@ -342,6 +342,13 @@ def configure_args(self):
'--enable-shared',
]
# Add extra_rpaths dirs from compilers.yaml into link wrapper
rpaths = [self.compiler.cc_rpath_arg + path
for path in self.compiler.extra_rpaths]
config_args.extend([
'--with-wrapper-ldflags={0}'.format(' '.join(rpaths))
])
# According to this comment on github:
#
# https://github.com/open-mpi/ompi/issues/4338#issuecomment-383982008