diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..afaa7af
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,6 @@
+
+ serial
+ openmpi
+ openmpi2
+ mvapich2
+
diff --git a/mumps.changes b/mumps.changes
index b74bed1..40c9b0b 100644
--- a/mumps.changes
+++ b/mumps.changes
@@ -1,3 +1,10 @@
+-------------------------------------------------------------------
+Tue Jan 8 22:53:16 UTC 2019 - Stefan BrĂ¼ns
+
+- Refactor spec for _multibuild, currently non-HPC flavors only.
+- Setup MPI environment when building MPI flavors, fixes build on
+ Tumbleweed, Leap 15.x, SLE 15.
+
-------------------------------------------------------------------
Sat Nov 21 14:23:53 UTC 2015 - scorot@free.fr
diff --git a/mumps.spec b/mumps.spec
index 49f2719..376ba0b 100644
--- a/mumps.spec
+++ b/mumps.spec
@@ -16,20 +16,65 @@
#
-%if 0%{?sles_version}
-%define _mpi openmpi mvapich2
-%else
-%define _mpi openmpi
+%global flavor @BUILD_FLAVOR@
+
+%define pname mumps
+
+%if "%flavor" == ""
+%define package_name %{pname}
+ExclusiveArch: do_not_build
%endif
+%if "%{flavor}" == "serial"
+%define my_prefix %_prefix
+%define my_bindir %_bindir
+%define my_libdir %_libdir
+%define my_incdir %_includedir
+%define my_datadir %_datadir
+# Stub MPI library
+%define mumps_f77_mpilibs '-lmpiseq"
+%endif
+
+%if "%{flavor}" == "openmpi"
+%define my_suffix -openmpi
+%define mpi_family openmpi
+%define mpiprefix %{_libdir}/mpi/gcc/%{mpi_family}
+%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
+%endif
+
+%if "%{flavor}" == "openmpi2"
+%define my_suffix -openmpi2
+%define mpi_family openmpi2
+%define mpiprefix %{_libdir}/mpi/gcc/%{mpi_family}
+%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
+%endif
+
+%if "%{flavor}" == "mvapich2"
+%define my_suffix -mvapich2
+%define mpi_family mvapich2
+%define mpiprefix %{_libdir}/mpi/gcc/%{mpi_family}
+%define mumps_f77_mpilibs -lfmpich -lmpich
+%endif
+
+%{?mpi_family:%{bcond_without mpi}}%{!?mpi_family:%{bcond_with mpi}}
+
+%if %{with mpi}
+%define my_prefix %{mpiprefix}
+%define my_bindir %{my_prefix}/bin
+%define my_libdir %{my_prefix}/%{_lib}/
+%define my_incdir %{my_prefix}/include/
+%define my_datadir %{my_prefix}/share/
+%endif
+
+
Summary: A MUltifrontal Massively Parallel Sparse direct Solver
License: SUSE-Public-Domain
Group: System/Libraries
-Name: mumps
+Name: mumps%{?my_suffix}
Version: 4.9.2
Release: 0
Url: http://mumps.enseeiht.fr/
-Source0: %{name}-%{version}.tar.bz2
+Source0: %{pname}-%{version}.tar.bz2
Source1: Makefile.ptscotch.inc
Source2: Makefile.scotch.inc
Source3: Makefile.seq.inc
@@ -40,14 +85,16 @@ Patch2: mumps-4.9.2-debian-tests-shlibs.patch
Patch3: mumps-4.9.2-debian-shared-mumps.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gcc-fortran
-BuildRequires: libptscotch-openmpi-devel
BuildRequires: libscotch-devel
-BuildRequires: openmpi-devel
-BuildRequires: scalapack-openmpi-devel
-%if 0%{?sles_version}
-BuildRequires: libptscotch-mvapich2-devel
-BuildRequires: mvapich2-devel
-BuildRequires: scalapack-mvapich2-devel
+%if %{with mpi}
+Requires: %{pname} = %{version}
+BuildRequires: %{pname}
+BuildRequires: %{pname}-devel
+BuildRequires: %{pname}-scotch
+BuildRequires: %{pname}-scotch-devel
+BuildRequires: libptscotch-%{mpi_family}-devel
+BuildRequires: %{mpi_family}-devel
+BuildRequires: scalapack-%{mpi_family}-devel
%endif
BuildRequires: blas-devel
BuildRequires: lapack-devel
@@ -58,7 +105,11 @@ particular focus on symmetric positive definite matrices. It can
operate on distributed matrices e.g. over a cluster. It has Fortran and
C interfaces, and can interface with ordering tools such as Scotch.
+%if %{!with mpi}
This package contains the sequential library.
+%else
+This package contains the parallel library build with %{mpi_family}.
+%endif
%package scotch
@@ -80,7 +131,15 @@ Summary: Files needed for developing mumps based applications
Group: Development/Libraries/Other
Requires: blas-devel
Requires: lapack-devel
-Requires: mumps = %{version}
+Requires: %{name} = %{version}
+%if %{with mpi}
+Requires: mumps-ptscotch-%{mpi_family} = %{version}
+Requires: mumps-devel = %{version}
+Requires: mumps-scotch-devel = %{version}
+Requires: %{mpi_family}-devel
+Requires: ptscotch-%{mpi_family}-devel
+Requires: scalapack-%{mpi_family}-devel
+%endif
%description devel
MUMPS implements a direct solver for large sparse linear systems, with a
@@ -95,68 +154,36 @@ Group: Development/Libraries/Other
Requires: blas-devel
Requires: lapack-devel
Requires: mumps = %{version}
+Requires: mumps-devel = %{version}
Requires: mumps-scotch = %{version}
-
%description scotch-devel
MUMPS implements a direct solver for large sparse linear systems, with a
particular focus on symmetric positive definite matrices. It can
operate on distributed matrices e.g. over a cluster. It has Fortran and
C interfaces, and can interface with ordering tools such as Scotch.
-%package openmpi
+
+%package -n %{pname}-ptscotch-%{mpi_family}
Summary: A MUltifrontal Massively Parallel Sparse direct Solver
Group: System/Libraries
Requires: mumps = %{version}
-%description openmpi
+%description -n %{pname}-ptscotch-%{mpi_family}
MUMPS implements a direct solver for large sparse linear systems, with a
particular focus on symmetric positive definite matrices. It can
operate on distributed matrices e.g. over a cluster. It has Fortran and
C interfaces, and can interface with ordering tools such as Scotch.
-This package contains the parallel library build with openmpi.
+This package contains the parallel library build with %{mpi_family} and with
+PTScotch enabled.
-%package ptscotch-openmpi
-Summary: A MUltifrontal Massively Parallel Sparse direct Solver
-Group: System/Libraries
-Requires: mumps = %{version}
-
-%description ptscotch-openmpi
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-This package contains the parallel library build with openmpi and with
-Scotch enabled.
-
-
-%package openmpi-devel
-Summary: Files needed for developing mumps based applications
-Group: Development/Libraries/Parallel
-Requires: blas-devel
-Requires: lapack-devel
-Requires: mumps-devel = %{version}
-Requires: mumps-openmpi = %{version}
-Requires: mumps-ptscotch-openmpi = %{version}
-Requires: openmpi-devel
-Requires: ptscotch-openmpi-devel
-Requires: scalapack-openmpi-devel
-
-%description openmpi-devel
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-
-%package test-openmpi
+%package -n %{pname}-test-%{mpi_family}
Summary: Simple test programs and examples for mumps
Group: System/Libraries
-%description test-openmpi
+%description -n %{pname}-test-%{mpi_family}
MUMPS implements a direct solver for large sparse linear systems, with a
particular focus on symmetric positive definite matrices. It can
operate on distributed matrices e.g. over a cluster. It has Fortran and
@@ -165,71 +192,8 @@ C interfaces, and can interface with ordering tools such as Scotch.
This packages contains some test and examples programs for mumps. In addition,
matlab and scilab extensions are provided in /usr/share/doc/packages/mumps.
-%if 0%{?sles_version}
-%package mvapich2
-Summary: A MUltifrontal Massively Parallel Sparse direct Solver
-Group: System/Libraries
-Requires: mumps = %{version}
-
-%description mvapich2
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-This package contains the parallel library build with mvapich2.
-
-
-%package ptscotch-mvapich2
-Summary: A MUltifrontal Massively Parallel Sparse direct Solver
-Group: System/Libraries
-Requires: mumps = %{version}
-
-%description ptscotch-mvapich2
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-This package contains the parallel library build with mvapich2 and with
-Scotch enabled.
-
-
-%package mvapich2-devel
-Summary: Files needed for developing mumps based applications
-Group: Development/Libraries/Parallel
-Requires: blas-devel
-Requires: lapack-devel
-Requires: mumps-devel = %{version}
-Requires: mumps-mvapich2 = %{version}
-Requires: mumps-ptscotch-mvapich2 = %{version}
-Requires: mvapich2-devel
-Requires: ptscotch-mvapich2-devel
-Requires: scalapack-mvapich2-devel
-
-%description mvapich2-devel
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-
-%package test-mvapich2
-Summary: Simple test programs and examples for mumps
-Group: System/Libraries
-
-%description test-mvapich2
-MUMPS implements a direct solver for large sparse linear systems, with a
-particular focus on symmetric positive definite matrices. It can
-operate on distributed matrices e.g. over a cluster. It has Fortran and
-C interfaces, and can interface with ordering tools such as Scotch.
-
-This packages contains some test and examples programs for mumps. In addition,
-matlab and scilab extensions are provided in /usr/share/doc/packages/mumps.
-%endif
-
%prep
-%setup -q
+%setup -q -n %{pname}-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
@@ -238,150 +202,118 @@ matlab and scilab extensions are provided in /usr/share/doc/packages/mumps.
%build
export SUSE_ASNEEDED=0
+%if !%{with mpi}
# sequential with scotch support enabled
cp -f %{S:2} Makefile.inc
-make MUMPS_MPI=openmpi MUMPS_LIBF77="-lmpiseq_scotch" \
+make \
+ MUMPS_LIBF77="-lmpiseq_scotch" \
OPTC="$RPM_OPT_FLAGS" \
PLAT="_scotch" all
-cp -a lib libmumps_scotch
-cp -af libseq/lib* libmumps_scotch
-cp -af PORD/lib/libpord_scotch.so* libmumps_scotch
+cp -a lib libmumps_scotch_seq
+cp -af libseq/lib* libmumps_scotch_seq
+cp -af PORD/lib/libpord_scotch.so* libmumps_scotch_seq
make clean
rm -f Makefile.inc
-# sequential only
+# sequential without scotch
cp -f %{S:3} Makefile.inc
-make MUMPS_LIBF77="-lmpiseq_seq" PLAT="_seq" \
- OPTC="$RPM_OPT_FLAGS" all
+make \
+ MUMPS_LIBF77="-lmpiseq_seq" \
+ OPTC="$RPM_OPT_FLAGS" \
+ PLAT="_seq" all
cp -a lib libmumps_seq
cp -af libseq/lib* libmumps_seq
cp -af PORD/lib/libpord_seq.so* libmumps_seq
make clean
rm -f Makefile.inc
+%endif
+
+%if %{with mpi}
+# Set LD_LIBRARY_PATH and PATH
+. %{my_bindir}/mpivars.sh
# ptscotch : parallel with scotch support enabled
-%if 0%{?sles_version}
cp -f %{S:1} Makefile.inc
-export LD_LIBRARY_PATH=%{_libdir}/mpi/gcc/mvapich2/%_lib
-make MUMPS_MPI=mvapich2 \
- FC=%{_libdir}/mpi/gcc/mvapich2/bin/mpif77 \
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/mvapich2/%_lib -lfmpich -lmpich" \
+make \
+ MUMPS_MPI=%{mpi_family} \
+ FC=%{my_bindir}/mpif77 \
+ MUMPS_LIBF77="-L%{my_libdir} %{?mumps_f77_mpilibs}" \
OPTC="$RPM_OPT_FLAGS" \
- INCPAR=-I%{_libdir}/mpi/gcc/mvapich2/include \
+ INCPAR=-I%{my_incdir}/ \
PLAT="_ptscotch" all
-# build test programs
-cp -a lib libmumps_ptscotch_mvapich2
-cp -af PORD/lib/libpord_ptscotch.so* libmumps_ptscotch_mvapich2/
+cp -a lib libmumps_ptscotch_%{mpi_family}
+cp -af PORD/lib/libpord_ptscotch.so* libmumps_ptscotch_%{mpi_family}/
make clean
rm -f Makefile.inc
-%endif
-cp -f %{S:1} Makefile.inc
-export LD_LIBRARY_PATH=%{_libdir}/mpi/gcc/openmpi/%_lib
-make MUMPS_MPI=openmpi \
- FC=%{_libdir}/mpi/gcc/openmpi/bin/mpif77 \
-%if 0%{?suse_version} > 1230
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/openmpi/%_lib -lmpi_mpifh -lmpi" \
-%else
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/openmpi/%_lib -lmpi_f77 -lmpi" \
-%endif
+# parallel without scotch
+cp %{S:4} Makefile.inc
+make \
+ MUMPS_MPI=%{mpi_family} \
+ FC=%{my_bindir}/mpif77 \
+ MUMPS_LIBF77="-L%{my_libdir} %{?mumps_f77_mpilibs}" \
OPTC="$RPM_OPT_FLAGS" \
- INCPAR=-I%{_libdir}/mpi/gcc/openmpi/include \
- PLAT="_ptscotch" all
-# build test programs
-cp -a lib libmumps_ptscotch_openmpi
-cp -af PORD/lib/libpord_ptscotch.so* libmumps_ptscotch_openmpi/
-make clean
-rm -f Makefile.inc
+ PLAT="" all
-%if 0%{?sles_version}
-cp %{S:4} Makefile.inc
-export LD_LIBRARY_PATH=%{_libdir}/mpi/gcc/mvapich2/%_lib
-make MUMPS_MPI=mvapich2 \
- FC=%{_libdir}/mpi/gcc/mvapich2/bin/mpif77 \
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/mvapich2/%_lib -lfmpich -lmpich" \
- OPTC="$RPM_OPT_FLAGS" all
# build test programs
-cd examples
-make all
-cd ..
-#
-cp -a lib lib_mvapich2
-cp -af PORD/lib/libpord.so* lib_mvapich2
-cp -a examples examples_mvapich2
+make -C examples all
+
+cp -a lib lib_%{mpi_family}
+cp -af PORD/lib/libpord.so* lib_%{mpi_family}
+cp -a examples examples_%{mpi_family}
make clean
rm -f Makefile.inc
%endif
-cp %{S:4} Makefile.inc
-export LD_LIBRARY_PATH=%{_libdir}/mpi/gcc/openmpi/%_lib
-make MUMPS_MPI=openmpi \
- FC=%{_libdir}/mpi/gcc/openmpi/bin/mpif77 \
-%if 0%{?suse_version} > 1230
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/openmpi/%_lib -lmpi_mpifh -lmpi" \
-%else
- MUMPS_LIBF77="-L%{_libdir}/mpi/gcc/openmpi/%_lib -lmpi_f77 -lmpi" \
-%endif
- OPTC="$RPM_OPT_FLAGS" all
-# build test programs
-cd examples
-make all
-cd ..
-#
-cp -a lib lib_openmpi
-cp -af PORD/lib/libpord.so* lib_openmpi
-cp -a examples examples_openmpi
-make clean
-rm -f Makefile.inc
-
%install
-mkdir -p %{buildroot}%{_libdir}
+mkdir -p %{buildroot}%{my_bindir}
+mkdir -p %{buildroot}%{my_libdir}
+
+cp -P PORD/lib/*.so* %{buildroot}%{my_libdir}
+
+%if "%{flavor}" == "serial"
mkdir -p %{buildroot}%{_includedir}/mumps
mkdir -p %{buildroot}%{_includedir}/pord
-mkdir -p %{buildroot}%{_bindir}
-
-# install sequential libs
-cp -P libmumps_seq/lib*.a %{buildroot}%{_libdir}
-cp -P libmumps_scotch/*.a %{buildroot}%{_libdir}
-cp -P libmumps_seq/lib*.so* %{buildroot}%{_libdir}
-cp -P libmumps_scotch/*.so* %{buildroot}%{_libdir}
-
-cp -P PORD/lib/*.so* %{buildroot}%{_libdir}
-
-# install parallel libs
-for mpi in %_mpi; do
- mkdir -p %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
- mkdir -p %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
- cp -P lib_$mpi/lib*.a %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
- cp -P libmumps_ptscotch_$mpi/*.a %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
- cp -P lib_$mpi/lib*.so* %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
- cp -P libmumps_ptscotch_$mpi/*.so* %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
- install -m 755 examples_$mpi/*simpletest %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
- install -m 755 examples_$mpi/c_example %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
-done
-
install -m 644 include/* %{buildroot}%{_includedir}/mumps
install -m 644 libseq/*.h %{buildroot}%{_includedir}/mumps
install -m 644 PORD/include/* %{buildroot}%{_includedir}/pord
+%endif
+
+%if !%{with mpi}
+# install sequential libs
+cp -P libmumps_seq/lib*.a %{buildroot}%{my_libdir}
+cp -P libmumps_seq/lib*.so* %{buildroot}%{my_libdir}
+cp -P libmumps_scotch_seq/*.a %{buildroot}%{my_libdir}
+cp -P libmumps_scotch_seq/*.so* %{buildroot}%{my_libdir}
+%endif
+
+%if %{with mpi}
+# install parallel libs
+cp -P lib_%{mpi_family}/lib*.a %{buildroot}%{my_libdir}
+cp -P lib_%{mpi_family}/lib*.so* %{buildroot}%{my_libdir}
+cp -P libmumps_ptscotch_%{mpi_family}/*.a %{buildroot}%{my_libdir}
+cp -P libmumps_ptscotch_%{mpi_family}/*.so* %{buildroot}%{my_libdir}
+
+install -m 755 examples_%{mpi_family}/*simpletest %{buildroot}%{my_bindir}
+install -m 755 examples_%{mpi_family}/c_example %{buildroot}%{my_bindir}
+%endif
# Don't want binaries in docdir
rm -rf examples/*.o examples/*simpletest examples/c_example
-# Remove parallel libs in sequential lib directory
-rm -f %{buildroot}%{_libdir}/libpord.so*
-rm -f %{buildroot}%{_libdir}/libpord_ptscotch.so*
-
# we make a symlink to the serial lib in the parallel lib prefix
# because some scientific packages don't manage different directories
# for the serial and parallel libs
-for mpi in %_mpi; do
-pushd %{buildroot}%{_libdir}
-for f in *_seq.* *_scotch.*; do
- rm -f %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib/$f && \
- ln -s %{_libdir}/$f %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib/$f
-done
-
+%if %{with mpi}
+for lib in libcmumps libdmumps libsmumps libzmumps libmumps_common libmpiseq libpord ; do
+ for plat in _seq _scotch ; do
+ for type in .a .so .so.%{version}; do
+ name=${lib}${plat}${type}
+ ln -s %{_libdir}/$name %{buildroot}%{my_libdir}/$name
+ done
+ done
done
+%endif
%clean
rm -rf %{buildroot}
@@ -389,26 +321,18 @@ rm -rf %{buildroot}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
+%if !%{with mpi}
%post scotch -p /sbin/ldconfig
%postun scotch -p /sbin/ldconfig
-
-%post openmpi -p /sbin/ldconfig
-%postun openmpi -p /sbin/ldconfig
-
-%post ptscotch-openmpi -p /sbin/ldconfig
-%postun ptscotch-openmpi -p /sbin/ldconfig
-
-%if 0%{?sles_version}
-%post mvapich2 -p /sbin/ldconfig
-%postun mvapich2 -p /sbin/ldconfig
-
-%post ptscotch-mvapich2 -p /sbin/ldconfig
-%postun ptscotch-mvapich2 -p /sbin/ldconfig
+%else
+%post -n %{pname}-ptscotch-%{mpi_family} -p /sbin/ldconfig
+%postun -n %{pname}-ptscotch-%{mpi_family} -p /sbin/ldconfig
%endif
+%if !%{with mpi}
%files
-%defattr(-,root,root,-)
-%doc ChangeLog README LICENSE VERSION doc SCILAB MATLAB
+%license LICENSE
+%doc ChangeLog README VERSION doc SCILAB MATLAB
%{_libdir}/libcmumps_seq.so.*
%{_libdir}/libdmumps_seq.so.*
%{_libdir}/libsmumps_seq.so.*
@@ -418,7 +342,6 @@ rm -rf %{buildroot}
%{_libdir}/libpord_seq.so.*
%files scotch
-%defattr(-,root,root,-)
%{_libdir}/libcmumps_scotch.so.*
%{_libdir}/libdmumps_scotch.so.*
%{_libdir}/libsmumps_scotch.so.*
@@ -428,82 +351,43 @@ rm -rf %{buildroot}
%{_libdir}/libpord_scotch.so.*
%files devel
-%defattr(-,root,root,-)
%{_includedir}/mumps
%{_includedir}/pord
%{_libdir}/*_seq.so
%{_libdir}/*_seq.a
%files scotch-devel
-%defattr(-,root,root,-)
%{_libdir}/*_scotch.so
%{_libdir}/*_scotch.a
-
-%files openmpi
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/openmpi/%_lib/libcmumps.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libdmumps.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libsmumps.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libzmumps.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libmumps_common.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libpord.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/lib*seq.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/lib*_scotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libmumps_common_scotch.so.*
-
-%files ptscotch-openmpi
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/openmpi/%_lib/libcmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libdmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libsmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libzmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libmumps_common_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libpord_ptscotch.so.*
-%{_libdir}/mpi/gcc/openmpi/%_lib/libmumps_common_ptscotch.so.*
-
-%files openmpi-devel
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/openmpi/%_lib/*.so
-%{_libdir}/mpi/gcc/openmpi/%_lib/*.a
-
-%if 0%{?sles_version}
-%files mvapich2
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libcmumps.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libdmumps.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libsmumps.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libzmumps.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libmumps_common.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libpord.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/lib*seq.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/lib*_scotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libmumps_common_scotch.so.*
-
-%files ptscotch-mvapich2
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libcmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libdmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libsmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libzmumps_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libmumps_common_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libpord_ptscotch.so.*
-%{_libdir}/mpi/gcc/mvapich2/%_lib/libmumps_common_ptscotch.so.*
-
-
-%files mvapich2-devel
-%defattr(-,root,root,-)
-%{_libdir}/mpi/gcc/mvapich2/%_lib/*.so
-%{_libdir}/mpi/gcc/mvapich2/%_lib/*.a
-
-%files test-mvapich2
-%defattr(-,root,root,-)
-%doc examples
-%{_libdir}/mpi/gcc/mvapich2/bin/*
%endif
-%files test-openmpi
-%defattr(-,root,root,-)
+%if %{with mpi}
+%files -n %{pname}-%{mpi_family}
+%{my_libdir}/libcmumps.so.*
+%{my_libdir}/libdmumps.so.*
+%{my_libdir}/libsmumps.so.*
+%{my_libdir}/libzmumps.so.*
+%{my_libdir}/libmumps_common.so.*
+%{my_libdir}/libpord.so.*
+# compat symlinks
+%{my_libdir}/lib*_seq.so.*
+%{my_libdir}/lib*_scotch.so.*
+
+%files -n %{pname}-ptscotch-%{mpi_family}
+%{my_libdir}/libcmumps_ptscotch.so.*
+%{my_libdir}/libdmumps_ptscotch.so.*
+%{my_libdir}/libsmumps_ptscotch.so.*
+%{my_libdir}/libzmumps_ptscotch.so.*
+%{my_libdir}/libmumps_common_ptscotch.so.*
+%{my_libdir}/libpord_ptscotch.so.*
+
+%files -n %{pname}-%{mpi_family}-devel
+%{my_libdir}/*.so
+%{my_libdir}/*.a
+
+%files -n %{pname}-test-%{mpi_family}
%doc examples
-%{_libdir}/mpi/gcc/openmpi/bin/*
+%{my_bindir}/*
+%endif
%changelog