2

I have some software that uses MPI. I have created an RPM package from that.

The requirements are such that mpich and mpich-devel are included:

BuildRequires:  libstdc++-devel autoconf gcc-c++ automake qmp qmp-devel environment-modules mpich-devel
BuildRequires:  libxml2-devel
Requires:       libstdc++ libxml2 qmp environment-modules mpich

(full spec file)

When I then try to install that via my Open Build Service home project, it tells me that the required library is not available:

# LC_ALL=C dnf install qdpxx qdpxx-devel --refresh --allowerasing
Error: nothing provides libmpi.so.12()(64bit) needed by qdpxx-1.44.0.git131-16.1.x86_64

The library is installed on my system, albeit not in a default path:

$ ls -l /usr/lib64/mpich/lib/
insgesamt 2780
lrwxrwxrwx. 1 root root      13 31. Mär 2016  libfmpich.so -> libmpifort.so*
lrwxrwxrwx. 1 root root      12 31. Mär 2016  libmpichcxx.so -> libmpicxx.so*
lrwxrwxrwx. 1 root root      13 31. Mär 2016  libmpichf90.so -> libmpifort.so*
lrwxrwxrwx. 1 root root       9 31. Mär 2016  libmpich.so -> libmpi.so*
lrwxrwxrwx. 1 root root      19 31. Mär 2016  libmpicxx.so -> libmpicxx.so.12.1.0*
lrwxrwxrwx. 1 root root      19 31. Mär 2016  libmpicxx.so.12 -> libmpicxx.so.12.1.0*
-rwxr-xr-x. 1 root root  134088 31. Mär 2016  libmpicxx.so.12.1.0*
lrwxrwxrwx. 1 root root      20 31. Mär 2016  libmpifort.so -> libmpifort.so.12.1.0*
lrwxrwxrwx. 1 root root      20 31. Mär 2016  libmpifort.so.12 -> libmpifort.so.12.1.0*
-rwxr-xr-x. 1 root root  228128 31. Mär 2016  libmpifort.so.12.1.0*
lrwxrwxrwx. 1 root root      16 31. Mär 2016  libmpi.so -> libmpi.so.12.1.0*
lrwxrwxrwx. 1 root root      16 31. Mär 2016  libmpi.so.12 -> libmpi.so.12.1.0*
-rwxr-xr-x. 1 root root 2474552 31. Mär 2016  libmpi.so.12.1.0*
lrwxrwxrwx. 1 root root       9 31. Mär 2016  libmpl.so -> libmpi.so*
lrwxrwxrwx. 1 root root       9 31. Mär 2016  libopa.so -> libmpi.so*
drwxr-xr-x. 2 root root    4096  5. Dez 18:08 pkgconfig/

What is missing? How do I get the package to recognize that mpich indeed provides the library libmpi.so.12?


$ rpm -q --provides mpich
libmpi.so.12()(64bit)(mpich-x86_64)
libmpicxx.so.12()(64bit)(mpich-x86_64)
libmpifort.so.12()(64bit)(mpich-x86_64)
mpi
mpich = 3.2-6.fc25
mpich(x86-64) = 3.2-6.fc25
mpich2 = 3.2
7
  • Is there a rpm file that libmpi.so.12 exists in? (That is, is there a RPM that provides that according to the RPM specifications?) – thrig Mar 30 '17 at 20:12
  • The package mpich-3.2-6.fc25.x86_64 contains the file /usr/lib64/mpich/lib/libmpi.so.12. – Martin Ueding Mar 30 '17 at 20:19
  • Okay, what does rpm -q --provides mpich show as that package providing? – thrig Mar 30 '17 at 20:30
  • I have added that to the end of the question. Seems like it is contained in there. – Martin Ueding Mar 30 '17 at 20:32
  • Hmm, can you manually rpm -i qdpxx... to see if it's RPM or dnf being derpy? – thrig Mar 30 '17 at 21:04
0

The answer is in the packaging guidelines:

MPI implementation specific files MUST be installed in the directories used by the used MPI compiler ($MPI_BIN, $MPI_LIB and so on).

For mpich, binaries must be in /usr/lib64/mpich/bin.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.