[ET Trac] [Einstein Toolkit] #2049: ExternalLibraries/MPI leads to link error in some cases
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Sun Jun 18 15:25:00 CDT 2017
#2049: ExternalLibraries/MPI leads to link error in some cases
-----------------------------------+----------------------------------------
Reporter: knarf | Owner:
Type: defect | Status: new
Priority: critical | Milestone: ET_2017_05
Component: EinsteinToolkit thorn | Version: development version
Keywords: |
-----------------------------------+----------------------------------------
The MPI thorn does not properly set the list of libraries necessary to
link against it when built. In particular, when built on a Debian stable
(stretch) system, the 'rt' and 'util' libraries are pulled in by MPI, but
not set in MPI_LIBS, leading to a Cactus link error in the end. Adding
'rt' and 'util' in general might not be the best idea, as this is very
likely system-specific (to Linux in this case).
What needs to be done is to use information about the built library
_after_ it was built to set MPI_LIBS, as we cannot (always) predict which
libraries MPI will pull in. This is complicated by the fact that those
variables are set in detect.sh, and not build.sh, so build.sh would need
means to set/change those variables. But since this is executed in a
parallel make session usually, this requires some care.
Note that in case a pre-existing library is used, 'rt' and 'util' are
correctly added to the required libs, because detect.sh actually queries
the library. It cannot do that when building, because by that time it
isn't built yet, and by the time it is, it is too late to tell Cactus at
the moment.
I'll file this as a bug for the MPI thorn for now, but a better handling
in Cactus in general is needed here. Also setting this as critical for the
release, because it breaks the build on a major Linux distribution.
One might be tempted to temporarily "fix" this by adding 'rt' and 'util'
to LIBS in debian.cfg. That is a bad idea, however, because Debian isn't a
Linux-only distribution, and in general one might not even want to use
OpenMPI there.
The same is true for adding 'rt' and 'util' to MPI_LIBS in build.sh,
because that would only work on a system that has this library installed.
On a Linux system, however, this solves the linking problem.
Ideally, we find some at least partial solution within only the MPI thorn
for the current release, down-grade priority and assign to Cactus itself
for a general solution. This has come up with other libraries in the past
if I remember correctly.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/2049>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list