On 07/07/2015 03:12 AM, Sandro Mani wrote:
Hello
I've got an initial implementation of this using the rpm dependency generator
hooks, as suggested in the other thread [1].
The resulting scripts are here:
https://smani.fedorapeople.org/rpm-mpi-hooks/
There is just one problem: an elf binary in an $MPI_HOME subfolder will now
trigger both the elf as well as the mpi dependency generator, resulting in both
libfoo.so()(64bit)
libfoo.so()(64bit)(openmpi-x86_64)
Also, isn't the -x86_64 redundant? Also though I guess we don't have an mpi
variable MPI_NAME.
Also, your trick of using:
for module in $(module avail 2>&1 | grep "^mpi/"); do
to find the available mpi modules needs a "-t" option for Lmod. Fortunately
this also works with environment-modules:
for module in $(module -t avail 2>&1 | grep "^mpi/"); do
Also, it doesn't seem to get all of the requires quite right. For
scorep-openmpi I have:
Provides: libscorep_adapter_compiler_event.so.2()(64bit)(openmpi-x86_64)
but:
Requires: libscorep_adapter_compiler_event.so.2()(64bit)
is being emitted. This appears to be coming from:
./fileattrs/libsymlink.attr:%__libsymlink_requires
%{_rpmconfigdir}/elfdeps --provides --soname-only
So it looks like we need to contend with that as well.
# cat fileattrs/libsymlink.attr
# Make libfoo.so symlinks require the soname-provide of the target library
%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only
%__libsymlink_magic ^symbolic link to `.*lib.*\.so\..*'$
%__libsymlink_exclude_path ^.*[[:digit:]]$
Perhaps with:
%global __libsymlink_exclude_path ^%{_prefix}/lib(64)?/(openmpi|mpich)/.*$
in mpi packages.
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane orion(a)nwra.com
Boulder, CO 80301
http://www.nwra.com