%global major_version 5 %global soname_version 5.8 # Due to OpenMPI-5.0 dropping in i686 %if 0%{?rhel} || 0%{?fedora} %ifarch %{ix86} %global with_openmpi 0 %global with_openmpi_check 0 %else %global with_openmpi 1 %global with_openmpi_check 1 %endif # rhbz#2225803 %ifnarch s390x %global with_mpich_check 1 %else %global with_mpich_check 0 %endif %global with_mpich 1 %endif ## Due to rhbz#1744780 %if 0%{?rhel} %global with_mpich 1 %global with_mpich_check 1 %global with_openmpi 1 %global with_openmpi_check 1 %endif # Workarounf for GCC-10 # https://gcc.gnu.org/gcc-10/porting_to.html %if 0%{?fedora} || 0%{?rhel} >= 9 %global build_fflags %{build_fflags} -fallow-argument-mismatch %endif %if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 %bcond_without arch64 %else %bcond_with arch64 %endif Name: MUMPS Version: %{soname_version}.1 Release: %autorelease Summary: A MUltifrontal Massively Parallel sparse direct Solver License: CECILL-C URL: https://mumps-solver.org Source0: https://mumps-solver.org/%{name}_%{version}.tar.gz # Custom Makefile changed for Fedora and built from Make.inc/Makefile.gfortran.PAR in the source. Source1: %{name}-Makefile.par.inc # Custom Makefile changed for Fedora and built from Make.inc/Makefile.gfortran.SEQ in the source. Source2: %{name}-Makefile.seq.inc BuildRequires: make BuildRequires: gcc-gfortran BuildRequires: gcc BuildRequires: pkgconfig(flexiblas) BuildRequires: metis-devel BuildRequires: scotch-devel >= 7.0.1 BuildRequires: scotch-devel-metis >= 7.0.1 BuildRequires: openssh-clients BuildRequires: hwloc-devel Requires: %{name}-common = %{version}-%{release} Obsoletes: %{name}-openmp < 0:5.4.0-1 %description 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 devel Summary: The MUMPS headers and development-related files Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Requires: %{name}-srpm-macros = %{version}-%{release} # FlexiBLAS takes advantage of openblas-openmp by default. # OpenMP sub-package will be obsoleted in future. Obsoletes: %{name}-openmp-devel < 0:5.4.0-1 %description devel Shared links and header files. This package contains dummy MPI header file including symbols used by MUMPS. %package examples Summary: The MUMPS common illustrative test programs Requires: %{name}%{?_isa} = %{version}-%{release} %description examples This package contains common illustrative test programs about how MUMPS can be used. %if %{with arch64} %package -n %{name}64 Summary: A MUltifrontal Massively Parallel sparse direct Solver BuildRequires: metis64-devel Requires: %{name}64%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Requires: %{name}-srpm-macros = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} %description -n %{name}64 Shared links and header files. This package contains dummy MPI header file including symbols used by MUMPS (64-bit integers). %package -n %{name}64-devel Summary: The MUMPS headers and development-related files Requires: %{name}64%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Requires: %{name}-srpm-macros = %{version}-%{release} %description -n %{name}64-devel Shared links and header files. This package contains dummy MPI header file including symbols used by MUMPS (64-bit integers). %package -n %{name}64-examples Summary: The MUMPS common illustrative test programs Requires: %{name}64%{?_isa} = %{version}-%{release} %description -n %{name}64-examples This package contains common illustrative test programs about how MUMPS (64-bit integers) can be used. %endif %package common Summary: Documentation files for MUMPS BuildArch: noarch %description common This package contains common documentation files for MUMPS. %package srpm-macros Summary: Additional RPM macros for MUMPS BuildArch: noarch %description srpm-macros Additional RPM macros for MUMPS. ######################################################## %if 0%{?with_openmpi} %package openmpi Summary: MUMPS libraries compiled against openmpi BuildRequires: openmpi-devel BuildRequires: blacs-openmpi-devel BuildRequires: scalapack-openmpi-devel #BuildRequires: metis-devel BuildRequires: ptscotch-openmpi-devel >= 7.0.1 BuildRequires: ptscotch-openmpi-devel-parmetis >= 7.0.1 %if 0%{?fedora} BuildRequires: rpm-mpi-hooks %endif Requires: %{name}-common = %{version}-%{release} Requires: openmpi%{?_isa} Requires: scalapack-openmpi%{?_isa} Requires: ptscotch-openmpi%{?_isa} >= 7.0.1 %description openmpi MUMPS libraries compiled against openmpi. %package openmpi-devel Summary: The MUMPS headers and development-related files BuildRequires: openmpi-devel Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Requires: %{name}-srpm-macros = %{version}-%{release} %if 0%{?fedora} Requires: rpm-mpi-hooks %endif %description openmpi-devel Shared links, header files for MUMPS. %package openmpi-examples Summary: The MUMPS OpenMPI common illustrative test programs Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: openmpi %if 0%{?fedora} BuildRequires: rpm-mpi-hooks %endif %description openmpi-examples This package contains common illustrative test programs about how MUMPS-openmpi can be used. %endif ########################################################## ######################################################## %if 0%{?with_mpich} %package mpich Summary: MUMPS libraries compiled against MPICH BuildRequires: mpich-devel BuildRequires: blacs-mpich-devel BuildRequires: scalapack-mpich-devel #BuildRequires: metis-devel BuildRequires: ptscotch-mpich-devel >= 7.0.1 BuildRequires: ptscotch-mpich-devel-parmetis >= 7.0.1 %if 0%{?fedora} BuildRequires: rpm-mpi-hooks %endif Requires: %{name}-common = %{version}-%{release} Requires: mpich%{?_isa} Requires: scalapack-mpich%{?_isa} Requires: ptscotch-mpich%{?_isa} >= 7.0.1 %description mpich MUMPS libraries compiled against MPICH. %package mpich-devel Summary: The MUMPS headers and development-related files BuildRequires: mpich-devel Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Requires: %{name}-srpm-macros = %{version}-%{release} %if 0%{?fedora} Requires: rpm-mpi-hooks %endif %description mpich-devel Shared links, header files for MUMPS. %package mpich-examples Summary: The MUMPS MPICH common illustrative test programs Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Requires: mpich %if 0%{?fedora} BuildRequires: rpm-mpi-hooks %endif %description mpich-examples This package contains common illustrative test programs about how MUMPS-mpich can be used. %endif ########################################################## %prep %setup -q -n %{name}_%{version} mv examples/README examples/README-examples %build ####################################################### ## Build MPI version rm -f Makefile.inc %if 0%{?with_openmpi} %{_openmpi_load} cp -f %{SOURCE1} Makefile.inc %if 0%{?fedora} %global mpif77_cflags %(env PKG_CONFIG_PATH=%{_libdir}/openmpi/lib/pkgconfig pkg-config --cflags ompi-f77) %global mpif77_libs %(env PKG_CONFIG_PATH=%{_libdir}/openmpi/lib/pkgconfig pkg-config --libs ompi-f77) %global mpifort_cflags %(env PKG_CONFIG_PATH=%{_libdir}/openmpi/lib/pkgconfig pkg-config --cflags ompi-fort) %global mpifort_libs %(env PKG_CONFIG_PATH=%{_libdir}/openmpi/lib/pkgconfig pkg-config --libs ompi-fort) %global mpic_libs %(env PKG_CONFIG_PATH=%{_libdir}/openmpi/lib/pkgconfig pkg-config --libs ompi) %endif %if 0%{?rhel} %global mpif77_cflags -I%{_includedir}/openmpi-%{_arch} %global mpif77_libs -lmpi_mpifh %global mpifort_cflags -I%{_includedir}/openmpi-%{_arch} %global mpifort_libs -lmpi_mpifh %global mpic_libs -lmpi %endif %if 0%{?rhel} MPIFLIB=" -L%{_libdir}/openmpi/lib -Wl,-rpath -Wl,%{_libdir}/openmpi/lib %{mpif77_libs}" %else MPIFLIB=" %{mpifort_libs}" %endif MPICLIB=" -lmpi" MUMPS_MPI=openmpi MUMPS_INCDIR=-I$MPI_INCLUDE LMETISDIR=%{_libdir} LMETIS="-lmetis -L$MPI_LIB -lptscotchparmetis" IMETIS=-I%{_includedir} #IMETIS=-I$MPI_LIB/scotch SCOTCHDIR=$MPI_LIB ISCOTCH=-I$MPI_INCLUDE/scotch LSCOTCH=" -L$MPI_LIB -lesmumps -lscotch -lscotcherr -lptesmumps -lptscotch -lptscotcherr -lscalapack" IPORD=" -I$PWD/PORD/include/" LPORD=" -L$PWD/PORD/lib -lpord" export MPIBLACSLIBS="$MPI_LIB -lscalapack" export MPI_COMPILER_NAME=openmpi export LD_LIBRARY_PATH="$MPI_LIB:%{_libdir}" export LDFLAGS="%{__global_ldflags}" mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/lib mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/examples mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/modules export LIBBLAS="-L%{_libdir} -lflexiblas" export INCBLAS=-I%{_includedir}/flexiblas make -j1 allshared \ SONAME_VERSION=%{soname_version} \ PLAT= \ FPIC_OPT=-fPIC \ CC=$MPI_BIN/mpicc \ FC=$MPI_BIN/mpif77 \ FL=$MPI_BIN/mpif77 \ OPTF="%{build_fflags} -Dintel_ -Wno-unused-dummy-argument -Wno-maybe-uninitialized -Dscotch -Dmetis -Dptscotch -DWITHOUT_PTHREAD -DINTSIZE32 -I${MPI_FORTRAN_MOD_DIR}" \ OPTC="%{build_cflags} -Dscotch -Dmetis -Dptscotch -DWITHOUT_PTHREAD -DINTSIZE32" \ OPTL="%{__global_ldflags} -Wl,-rpath,$MPI_LIB" \ MUMPS_MPI="$MUMPS_MPI" \ MUMPS_INCDIR="$MUMPS_INCDIR $INCBLAS" \ MUMPS_LIBF77="${LIBBLAS} -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB %{mpic_libs} $MPIFORTRANSLIB $MPIBLACSLIBS" \ LMETISDIR="$LMETISDIR" LMETIS="$LMETIS" IMETIS="$IMETIS" \ SCOTCHDIR=$SCOTCHDIR \ ISCOTCH=$ISCOTCH \ LSCOTCH="$LSCOTCH" \ IPORD="$IPORD" \ LPORD="$LPORD" %{_openmpi_unload} cp -pr lib/* %{name}-%{version}-$MPI_COMPILER_NAME/lib cp -pr examples/* %{name}-%{version}-$MPI_COMPILER_NAME/examples rm -rf lib/* cp -a include %{name}-%{version}-$MPI_COMPILER_NAME/ cp -pr src/*.mod %{name}-%{version}-$MPI_COMPILER_NAME/modules make clean PLAT= OPTC= %endif ###################################################### ####################################################### ## Build MPICH version %if 0%{?with_mpich} rm -f Makefile.inc cp -f %{SOURCE1} Makefile.inc # -DBLR_MT needs OpenMP sed -e 's| -DBLR_MT||g' -i Makefile.inc %{_mpich_load} %global mpif77_cflags %(env PKG_CONFIG_PATH=%{_libdir}/mpich/lib/pkgconfig pkg-config --cflags mpich) %global mpif77_libs %(env PKG_CONFIG_PATH=%{_libdir}/mpich/lib/pkgconfig pkg-config --libs mpich) %global mpifort_cflags %(env PKG_CONFIG_PATH=%{_libdir}/mpich/lib/pkgconfig pkg-config --cflags mpich) %global mpifort_libs %(env PKG_CONFIG_PATH=%{_libdir}/mpich/lib/pkgconfig pkg-config --libs mpich) %global mpich_libs %(env PKG_CONFIG_PATH=%{_libdir}/mpich/lib/pkgconfig pkg-config --libs mpich) MPICLIB=" -lmpich" MPIFLIB=" %{mpifort_libs}" MUMPS_MPI=mpich MUMPS_INCDIR=-I$MPI_INCLUDE LMETISDIR=$MPI_LIB LMETIS="-lmetis -L$MPI_LIB -lptscotchparmetis" IMETIS=-I%{_includedir} #IMETIS=-I$MPI_LIB/scotch SCOTCHDIR=$MPI_LIB ISCOTCH=-I$MPI_INCLUDE/scotch LSCOTCH="-L$MPI_LIB -lesmumps -lscotch -lscotcherr -lptesmumps -lptscotch -lptscotcherr -lscalapack" export IPORD=" -I$PWD/PORD/include/" export LPORD=" -L$PWD/PORD/lib -lpord" export MPIBLACSLIBS="$MPI_LIB -lscalapack" export MPI_COMPILER_NAME=mpich export LD_LIBRARY_PATH=$MPI_LIB:%{_libdir} export LDFLAGS="%{__global_ldflags}" mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/lib mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/examples mkdir -p %{name}-%{version}-$MPI_COMPILER_NAME/modules export LIBBLAS="-L%{_libdir} -lflexiblas" export INCBLAS=-I%{_includedir}/flexiblas make -j1 allshared \ SONAME_VERSION=%{soname_version} \ PLAT= \ FPIC_OPT=-fPIC \ CC=$MPI_BIN/mpicc \ FC=$MPI_BIN/mpif77 \ FL=$MPI_BIN/mpif77 \ OPTF="%{build_fflags} -Dintel_ -Wno-unused-dummy-argument -Wno-maybe-uninitialized -Dscotch -Dmetis -Dptscotch -DWITHOUT_PTHREAD -DINTSIZE32 -I${MPI_FORTRAN_MOD_DIR}" \ OPTC="%{build_cflags} -Dscotch -Dmetis -Dptscotch -DWITHOUT_PTHREAD -DINTSIZE32" \ OPTL="%{__global_ldflags} -Wl,-rpath,$MPI_LIB" \ MUMPS_MPI="$MUMPS_MPI" \ MUMPS_INCDIR="$MUMPS_INCDIR $INCBLAS" \ MUMPS_LIBF77="${LIBBLAS} -L$MPI_LIB %{mpich_libs} $MPIFORTRANSLIB -lscalapack $MPIBLACSLIBS" \ LMETISDIR="$LMETISDIR" LMETIS="$LMETIS" IMETIS="$IMETIS" \ SCOTCHDIR=$SCOTCHDIR \ ISCOTCH=$ISCOTCH \ LSCOTCH="$LSCOTCH" \ IPORD="$IPORD" \ LPORD="$LPORD" %{_mpich_unload} cp -pr lib/* %{name}-%{version}-$MPI_COMPILER_NAME/lib cp -pr examples/* %{name}-%{version}-$MPI_COMPILER_NAME/examples cp -a include %{name}-%{version}-$MPI_COMPILER_NAME/ rm -rf lib/* cp -pr src/*.mod %{name}-%{version}-$MPI_COMPILER_NAME/modules make clean PLAT= OPTC= %endif ###################################################### ## Build serial version rm -f Makefile.inc cp -f %{SOURCE2} Makefile.inc # -DBLR_MT needs OpenMP sed -e 's| -DBLR_MT||g' -i Makefile.inc mkdir -p %{name}-%{version}/lib mkdir -p %{name}-%{version}/examples mkdir -p %{name}-%{version}/modules IPORD=" -I$PWD/PORD/include/" LPORD=" -L$PWD/PORD/lib -lpord" export LIBBLAS="-L%{_libdir} -lflexiblas" export INCBLAS=-I%{_includedir}/flexiblas export LDFLAGS="%{__global_ldflags}" make -j1 allshared \ SONAME_VERSION=%{soname_version} \ PLAT= \ FPIC_OPT=-fPIC \ CC=gcc \ FC=gfortran \ FL=gfortran \ OPTF="%{build_fflags} -Dscotch -Dmetis -DWITHOUT_PTHREAD -DINTSIZE32" \ OPTL="%{__global_ldflags}" \ OPTC="%{build_cflags} -Dscotch -Dmetis -DWITHOUT_PTHREAD -DINTSIZE32" \ MUMPS_LIBF77="${LIBBLAS}" \ LIBBLAS="${LIBBLAS}" \ LIBOTHERS=" -lpthread" \ LIBSEQ="-L../libseq -lmpiseq" \ INCSEQ="-I../libseq $INCBLAS" \ LMETISDIR=%{_libdir} \ IMETIS=-I%{_includedir} \ LMETIS="-L%{_libdir} -lmetis -lscotchmetis" \ SCOTCHDIR=%{_prefix} \ ISCOTCH=-I%{_includedir}/scotch \ LSCOTCH=" -L%{_libdir} -lesmumps -lscotch -lscotcherr" \ IPORD="$IPORD" \ LPORD="$LPORD" make -C examples cp -pr lib/* %{name}-%{version}/lib cp -pr examples/* %{name}-%{version}/examples cp -a include %{name}-%{version}/ rm -rf lib/* cp -pr src/*.mod %{name}-%{version}/modules make clean PLAT= OPTC= ####################################################### ## Build 64-bit Fortran integers %if %{with arch64} rm -f Makefile.inc cp -f %{SOURCE2} Makefile.inc # -DBLR_MT needs OpenMP sed -e 's| -DBLR_MT||g' -i Makefile.inc sed -e 's|"metis.h"|"metis64.h"|g' -i src/mumps_metis64.c src/mumps_metis.c src/mumps_metis_int.c src/ve/include/VE_Metis.h mkdir -p %{name}-%{version}-64/lib mkdir -p %{name}-%{version}-64/examples mkdir -p %{name}-%{version}-64/modules IPORD=" -I$PWD/PORD/include/" LPORD=" -L$PWD/PORD/lib -lpord64" export LIBBLAS="-L%{_libdir} -lflexiblas64" export INCBLAS=-I%{_includedir}/flexiblas64 export LDFLAGS="%{__global_ldflags}" make -j1 allshared \ SONAME_VERSION=%{soname_version} \ PLAT=64 \ FPIC_OPT=-fPIC \ CC=gcc \ FC=gfortran \ FL=gfortran \ OPTF="%{build_fflags} -fdefault-integer-8 -Dscotch -Dmetis -DWITHOUT_PTHREAD -DINTSIZE64 -DPORD_INTSIZE64" \ OPTL="%{__global_ldflags}" \ OPTC="%{build_cflags} -Dscotch -Dmetis -DWITHOUT_PTHREAD -DINTSIZE64 -DPORD_INTSIZE64" \ MUMPS_LIBF77="${LIBBLAS}" \ LIBBLAS="${LIBBLAS}" \ LIBOTHERS=" -lpthread" \ LIBSEQ="-L../libseq -lmpiseq64" \ INCSEQ="-I../libseq $INCBLAS" \ LMETISDIR=%{_libdir} \ IMETIS=-I%{_includedir} \ LMETIS="-L%{_libdir} -lmetis64 -lscotchmetis" \ SCOTCHDIR=%{_prefix} \ ISCOTCH=-I%{_includedir}/scotch \ LSCOTCH=" -L%{_libdir} -lesmumps -lscotch -lscotcherr" \ IPORD="$IPORD" \ LPORD="$LPORD" make -C examples cp -pr lib/lib*64* %{name}-%{version}-64/lib/ cp -pr examples/* %{name}-%{version}-64/examples cp -a include %{name}-%{version}-64/ rm -rf lib/* cp -pr src/*.mod %{name}-%{version}-64/modules make clean PLAT=64 OPTC= %endif ####################################################### # Make sure documentation is using Unicode. iconv -f iso8859-1 -t utf-8 README > README-t && mv README-t README %install ######################################################### %if 0%{?with_openmpi} %{_openmpi_load} mkdir -p $RPM_BUILD_ROOT$MPI_LIB mkdir -p $RPM_BUILD_ROOT%{_libdir}/openmpi/%{name}-%{version}-examples mkdir -p $RPM_BUILD_ROOT$MPI_INCLUDE mkdir -p $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}-%{version} # Install libraries cp -p %{name}-%{version}-openmpi/lib/libcmumps.so %{name}-%{version}-openmpi/lib/libcmumps-%{soname_version}.so cp -p %{name}-%{version}-openmpi/lib/libdmumps.so %{name}-%{version}-openmpi/lib/libdmumps-%{soname_version}.so cp -p %{name}-%{version}-openmpi/lib/libzmumps.so %{name}-%{version}-openmpi/lib/libzmumps-%{soname_version}.so cp -p %{name}-%{version}-openmpi/lib/libsmumps.so %{name}-%{version}-openmpi/lib/libsmumps-%{soname_version}.so cp -p %{name}-%{version}-openmpi/lib/libmumps_common.so %{name}-%{version}-openmpi/lib/libmumps_common-%{soname_version}.so cp -p %{name}-%{version}-openmpi/lib/libpord.so %{name}-%{version}-openmpi/lib/libpord-%{soname_version}.so install -cpm 755 %{name}-%{version}-openmpi/lib/*.so $RPM_BUILD_ROOT$MPI_LIB/ ln -fsrv $MPI_LIB/libcmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libcmumps.so ln -fsrv $MPI_LIB/libdmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libdmumps.so ln -fsrv $MPI_LIB/libzmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libzmumps.so ln -fsrv $MPI_LIB/libsmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libsmumps.so ln -fsrv $MPI_LIB/libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libmumps_common.so ln -fsrv $MPI_LIB/libpord-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libpord.so ln -fsrv $MPI_LIB/libcmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libcmumps-%{major_version}.so ln -fsrv $MPI_LIB/libdmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libdmumps-%{major_version}.so ln -fsrv $MPI_LIB/libzmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libzmumps-%{major_version}.so ln -fsrv $MPI_LIB/libsmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libsmumps-%{major_version}.so ln -fsrv $MPI_LIB/libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libmumps_common-%{major_version}.so ln -fsrv $MPI_LIB/libpord-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libpord-%{major_version}.so install -cpm 755 %{name}-%{version}-openmpi/examples/?simpletest $RPM_BUILD_ROOT%{_libdir}/openmpi/%{name}-%{version}-examples install -cpm 755 %{name}-%{version}-openmpi/examples/input_* $RPM_BUILD_ROOT%{_libdir}/openmpi/%{name}-%{version}-examples install -cpm 755 %{name}-%{version}-openmpi/examples/README-* $RPM_BUILD_ROOT%{_libdir}/openmpi/%{name}-%{version}-examples install -cpm 644 %{name}-%{version}-openmpi/include/*.h $RPM_BUILD_ROOT$MPI_INCLUDE install -cpm 644 PORD/include/* $RPM_BUILD_ROOT$MPI_INCLUDE install -cpm 644 %{name}-%{version}-openmpi/modules/* $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}-%{version}/ %{_openmpi_unload} %endif ########################################################## ######################################################### %if 0%{?with_mpich} %{_mpich_load} mkdir -p $RPM_BUILD_ROOT$MPI_LIB mkdir -p $RPM_BUILD_ROOT%{_libdir}/mpich/%{name}-%{version}-examples mkdir -p $RPM_BUILD_ROOT$MPI_INCLUDE mkdir -p $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}-%{version} # Install libraries cp -p %{name}-%{version}-mpich/lib/libcmumps.so %{name}-%{version}-mpich/lib/libcmumps-%{soname_version}.so cp -p %{name}-%{version}-mpich/lib/libdmumps.so %{name}-%{version}-mpich/lib/libdmumps-%{soname_version}.so cp -p %{name}-%{version}-mpich/lib/libzmumps.so %{name}-%{version}-mpich/lib/libzmumps-%{soname_version}.so cp -p %{name}-%{version}-mpich/lib/libsmumps.so %{name}-%{version}-mpich/lib/libsmumps-%{soname_version}.so cp -p %{name}-%{version}-mpich/lib/libmumps_common.so %{name}-%{version}-mpich/lib/libmumps_common-%{soname_version}.so cp -p %{name}-%{version}-mpich/lib/libpord.so %{name}-%{version}-mpich/lib/libpord-%{soname_version}.so install -cpm 755 %{name}-%{version}-mpich/lib/*.so $RPM_BUILD_ROOT$MPI_LIB/ ln -fsrv $MPI_LIB/libcmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libcmumps.so ln -fsrv $MPI_LIB/libdmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libdmumps.so ln -fsrv $MPI_LIB/libzmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libzmumps.so ln -fsrv $MPI_LIB/libsmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libsmumps.so ln -fsrv $MPI_LIB/libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libmumps_common.so ln -fsrv $MPI_LIB/libpord-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libpord.so ln -fsrv $MPI_LIB/libcmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libcmumps-%{major_version}.so ln -fsrv $MPI_LIB/libdmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libdmumps-%{major_version}.so ln -fsrv $MPI_LIB/libzmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libzmumps-%{major_version}.so ln -fsrv $MPI_LIB/libsmumps-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libsmumps-%{major_version}.so ln -fsrv $MPI_LIB/libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libmumps_common-%{major_version}.so ln -fsrv $MPI_LIB/libpord-%{soname_version}.so $RPM_BUILD_ROOT$MPI_LIB/libpord-%{major_version}.so install -cpm 755 %{name}-%{version}-mpich/examples/?simpletest $RPM_BUILD_ROOT%{_libdir}/mpich/%{name}-%{version}-examples install -cpm 755 %{name}-%{version}-mpich/examples/input_* $RPM_BUILD_ROOT%{_libdir}/mpich/%{name}-%{version}-examples install -cpm 755 %{name}-%{version}-mpich/examples/README-* $RPM_BUILD_ROOT%{_libdir}/mpich/%{name}-%{version}-examples install -cpm 644 %{name}-%{version}-mpich/include/*.h $RPM_BUILD_ROOT$MPI_INCLUDE install -cpm 644 PORD/include/* $RPM_BUILD_ROOT$MPI_INCLUDE install -cpm 644 %{name}-%{version}-mpich/modules/* $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}-%{version}/ %{_mpich_unload} %endif ########################################################## mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name}-%{version}/examples mkdir -p $RPM_BUILD_ROOT%{_libdir} mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name} mkdir -p $RPM_BUILD_ROOT%{_fmoddir}/%{name}-%{version} # Install libraries cp -p %{name}-%{version}/lib/libcmumps.so %{name}-%{version}/lib/libcmumps-%{soname_version}.so cp -p %{name}-%{version}/lib/libdmumps.so %{name}-%{version}/lib/libdmumps-%{soname_version}.so cp -p %{name}-%{version}/lib/libzmumps.so %{name}-%{version}/lib/libzmumps-%{soname_version}.so cp -p %{name}-%{version}/lib/libsmumps.so %{name}-%{version}/lib/libsmumps-%{soname_version}.so cp -p %{name}-%{version}/lib/libmumps_common.so %{name}-%{version}/lib/libmumps_common-%{soname_version}.so cp -p %{name}-%{version}/lib/libpord.so %{name}-%{version}/lib/libpord-%{soname_version}.so cp -p %{name}-%{version}/lib/libmpiseq.so %{name}-%{version}/lib/libmpiseq-%{soname_version}.so install -cpm 755 %{name}-%{version}/lib/*.so $RPM_BUILD_ROOT%{_libdir}/ ln -fsrv libcmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libcmumps.so ln -fsrv libdmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libdmumps.so ln -fsrv libzmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libzmumps.so ln -fsrv libsmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libsmumps.so ln -fsrv libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmumps_common.so ln -fsrv libpord-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libpord.so ln -fsrv libmpiseq-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmpiseq.so ln -fsrv libcmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libcmumps-%{major_version}.so ln -fsrv libdmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libdmumps-%{major_version}.so ln -fsrv libzmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libzmumps-%{major_version}.so ln -fsrv libsmumps-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libsmumps-%{major_version}.so ln -fsrv libmumps_common-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmumps_common-%{major_version}.so ln -fsrv libpord-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libpord-%{major_version}.so ln -fsrv libmpiseq-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmpiseq-%{major_version}.so install -cpm 755 %{name}-%{version}/examples/?simpletest $RPM_BUILD_ROOT%{_libexecdir}/%{name}-%{version}/examples install -cpm 755 %{name}-%{version}/examples/input_* $RPM_BUILD_ROOT%{_libexecdir}/%{name}-%{version}/examples install -cpm 755 %{name}-%{version}/examples/README-* $RPM_BUILD_ROOT%{_libexecdir}/%{name}-%{version}/examples install -cpm 644 %{name}-%{version}/modules/* $RPM_BUILD_ROOT%{_fmoddir}/%{name}-%{version}/ install -cpm 644 %{name}-%{version}/include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name} install -cpm 644 libseq/*.h $RPM_BUILD_ROOT%{_includedir}/%{name} install -cpm 644 PORD/include/* $RPM_BUILD_ROOT%{_includedir}/%{name} ########################################################## %if %{with arch64} mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name}64-%{version}/examples mkdir -p $RPM_BUILD_ROOT%{_libdir} mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}64 mkdir -p $RPM_BUILD_ROOT%{_fmoddir}/%{name}64-%{version} # Install libraries cp -p %{name}-%{version}-64/lib/libcmumps64.so %{name}-%{version}-64/lib/libcmumps64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libdmumps64.so %{name}-%{version}-64/lib/libdmumps64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libzmumps64.so %{name}-%{version}-64/lib/libzmumps64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libsmumps64.so %{name}-%{version}-64/lib/libsmumps64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libmumps_common64.so %{name}-%{version}-64/lib/libmumps_common64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libpord64.so %{name}-%{version}-64/lib/libpord64-%{soname_version}.so cp -p %{name}-%{version}-64/lib/libmpiseq64.so %{name}-%{version}-64/lib/libmpiseq64-%{soname_version}.so install -cpm 755 %{name}-%{version}-64/lib/lib*64*.so $RPM_BUILD_ROOT%{_libdir}/ ln -fsrv libcmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libcmumps64.so ln -fsrv libdmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libdmumps64.so ln -fsrv libzmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libzmumps64.so ln -fsrv libsmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libsmumps64.so ln -fsrv libmumps_common64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmumps_common64.so ln -fsrv libpord64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libpord64.so ln -fsrv libmpiseq64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmpiseq64.so ln -fsrv libcmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libcmumps64-%{major_version}.so ln -fsrv libdmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libdmumps64-%{major_version}.so ln -fsrv libzmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libzmumps64-%{major_version}.so ln -fsrv libsmumps64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libsmumps64-%{major_version}.so ln -fsrv libmumps_common64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmumps_common64-%{major_version}.so ln -fsrv libpord64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libpord64-%{major_version}.so ln -fsrv libmpiseq64-%{soname_version}.so $RPM_BUILD_ROOT%{_libdir}/libmpiseq64-%{major_version}.so install -cpm 755 %{name}-%{version}-64/examples/?simpletest $RPM_BUILD_ROOT%{_libexecdir}/%{name}64-%{version}/examples install -cpm 755 %{name}-%{version}-64/examples/input_* $RPM_BUILD_ROOT%{_libexecdir}/%{name}64-%{version}/examples install -cpm 755 %{name}-%{version}-64/examples/README-* $RPM_BUILD_ROOT%{_libexecdir}/%{name}64-%{version}/examples install -cpm 644 %{name}-%{version}-64/modules/* $RPM_BUILD_ROOT%{_fmoddir}/%{name}64-%{version}/ install -cpm 644 %{name}-%{version}-64/include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}64/ install -cpm 644 libseq/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}64/ install -cpm 644 PORD/include/* $RPM_BUILD_ROOT%{_includedir}/%{name}64/ %endif ############################################################# # rpm macro for version checking mkdir -p $RPM_BUILD_ROOT%{_rpmmacrodir} cat > $RPM_BUILD_ROOT%{_rpmmacrodir}/macros.MUMPS <