diff options
author | Jon Rood <jon.rood@nrel.gov> | 2018-07-30 13:02:09 -0600 |
---|---|---|
committer | scheibelp <scheibel1@llnl.gov> | 2018-07-30 15:02:09 -0400 |
commit | 15d96f01660057463863a05049b287df3341175e (patch) | |
tree | 63046fa820a49a90f6ae8f3e6afe5b21d8afb011 | |
parent | 13cf6d55e42042a5b605c2d91c1ac68e41466164 (diff) | |
download | spack-15d96f01660057463863a05049b287df3341175e.tar.gz spack-15d96f01660057463863a05049b287df3341175e.tar.bz2 spack-15d96f01660057463863a05049b287df3341175e.tar.xz spack-15d96f01660057463863a05049b287df3341175e.zip |
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.
-rw-r--r-- | var/spack/repos/builtin/packages/openmpi/package.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index e276528f21..79ad131132 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -342,6 +342,13 @@ class Openmpi(AutotoolsPackage): '--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 |