F23 Self Contained Change: RPM MPI Requires Provides

Orion Poplawski orion at cora.nwra.com
Thu Jul 9 18:18:37 UTC 2015

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)


Requires: libscorep_adapter_compiler_event.so.2()(64bit)

is being emitted.  This appears to be coming from:

%{_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 at nwra.com
Boulder, CO 80301                   http://www.nwra.com

More information about the devel mailing list