# default harden flags breaks gfortran work %undefine _hardened_build # Testing ? %bcond_without check ## Debug builds ? %bcond_with debug # # Define _pkgdocdir macro on epel %{?el6:%global _pkgdocdir %{_docdir}/%{name}} %{?el7:%global _pkgdocdir %{_docdir}/%{name}} # # No MPICH support on these arches %if 0%{?rhel} || 0%{?rhel} < 7 %ifarch %{power64} %bcond_with mpich %endif %endif %if 0%{?rhel} || 0%{?rhel} < 7 %ifnarch %{power64} %bcond_without mpich %endif %endif %if 0%{?fedora} || 0%{?rhel} >= 7 %bcond_without mpich %endif %ifarch s390x %bcond_with openmpi %else %bcond_without openmpi %endif # We are using blas/lapack on s390x architectures only # since openblas is not provided %bcond_without blas # ## PETSC looks incompatible with serial MUMPS %bcond_with mumps_serial # ## Does not build with SuperLU < 5.2.0 %if 0%{?fedora} >= 25 %bcond_without superlu %endif # # hdf5' is required by 'cgns' # hdf5 needs MPI %if 0%{?fedora} || 0%{?rhel} >= 7 %bcond_without cgns %bcond_without hdf5 %else %bcond_with cgns %bcond_with hdf5 %endif # With suitesparse support ? %{!?el6:%global with_suitesparse 1} # ## PETSc needs fftw's MPI implementation %if 0%{?fedora} >= 25 %bcond_without fftw %else %bcond_with fftw %endif # # 'scalapack' is required by 'mumps' %if %{with openmpi} %bcond_without mpi %bcond_without sundials %ifarch s390x %bcond_with scalapack %bcond_with mumps %else %bcond_without scalapack %bcond_without mumps %endif %bcond_without ptscotch %bcond_without hypre %global _incmpidir %{_includedir}/openmpi-%{_arch} %global _libmpidir %{_libdir}/openmpi/lib %endif %if %{with mpich} %bcond_without mpi %bcond_without sundials %ifarch s390x %bcond_with scalapack %bcond_with mumps %else %bcond_without scalapack %bcond_without mumps %endif %bcond_without ptscotch %bcond_without hypre %global _incmpichdir %{_includedir}/mpich-%{_arch} %global _libmpichdir %{_libdir}/mpich/lib %endif # 64bit-int libs not built # bz#1382916 %if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 # blas64 not in el6 %if 0%{?el6} %bcond_with arch64 %else %bcond_without arch64 %endif %else %bcond_with arch64 %endif %if 0%{?el6} %{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro} %endif %if %{with arch64} %bcond_without blas64 %endif Name: petsc Summary: Portable Extensible Toolkit for Scientific Computation Version: 3.7.5 Release: 3%{?dist} License: BSD URL: https://www.mcs.anl.gov/petsc Source0: http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-%{version}.tar.gz ## Remove rpath flags Patch0: %{name}-3.7-no-rpath.patch ## Rename library name for 64-bit integer package Patch1: %{name}-lib64.patch # Avoid a clash with complex.h Patch2: %{name}-avoid_clash_with_complex.h.patch # Diable checkopts and petscnagupgrade.py Patch3: %{name}-disable_petscnagupgrade.patch %if %{with superlu} BuildRequires: SuperLU-devel %endif %if %{with sundials} BuildRequires: sundials-devel %endif %if %{with mumps_serial} BuildRequires: MUMPS-devel %endif %if 0%{?with_suitesparse} BuildRequires: suitesparse-devel %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 BuildRequires: blas-devel BuildRequires: lapack-devel %else BuildRequires: openblas-devel %endif %endif BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: libX11-devel BuildRequires: python2-devel BuildRequires: pcre-devel BuildRequires: pkgconfig BuildRequires: valgrind-devel BuildRequires: tcsh %description PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. %package devel Summary: Portable Extensible Toolkit for Scientific Computation (developer files) Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} %description devel Portable Extensible Toolkit for Scientific Computation (developer files). %package doc Summary: Portable Extensible Toolkit for Scientific Computation (documentation files) BuildArch: noarch %description doc Portable Extensible Toolkit for Scientific Computation. PDF and HTML documentation files. %if %{with arch64} %package -n petsc64 Summary: Portable Extensible Toolkit for Scientific Computation (64bit INTEGER) %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 BuildRequires: blas64-devel BuildRequires: lapack64-devel %else BuildRequires: openblas-serial64 >= 0.2.19-1 BuildRequires: openblas-devel >= 0.2.19-1 %endif %description -n petsc64 PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations (64bit INTEGER). %package -n petsc64-devel Requires: %{name}64%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{?_isa} Summary: Portable Extensible Toolkit for Scientific Computation (64bit INTEGER) %description -n petsc64-devel Portable Extensible Toolkit for Scientific Computation (developer files) (64bit INTEGER). %endif ############################################################################# ######### %if %{with openmpi} %package openmpi Summary: Portable Extensible Toolkit for Scientific Computation (OpenMPI) BuildRequires: openmpi-devel %if %{with hdf5} BuildRequires: hdf5-openmpi-devel %endif %if %{with cgns} BuildRequires: cgnslib-devel BuildRequires: hdf5-devel %endif %if %{with ptscotch} BuildRequires: ptscotch-openmpi-devel %endif %if %{with scalapack} BuildRequires: scalapack-openmpi-devel BuildRequires: blacs-openmpi-devel %endif %if %{with mumps} BuildRequires: MUMPS-openmpi-devel %endif %if %{with sundials} BuildRequires: sundials-openmpi-devel %endif %if %{with fftw} BuildRequires: fftw-devel BuildRequires: fftw-openmpi-devel %endif %if %{with hypre} BuildRequires: hypre-openmpi-devel %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 BuildRequires: blas-devel BuildRequires: lapack-devel %else BuildRequires: openblas-devel %endif %endif %description openmpi PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. %package openmpi-devel Summary: Portable Extensible Toolkit for Scientific Computation (OpenMPI) Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: openmpi-devel%{?_isa} %description openmpi-devel Portable Extensible Toolkit for Scientific Computation (developer files). %endif ###### ############################################################################### ###### %if %{with mpich} %package mpich Summary: Portable Extensible Toolkit for Scientific Computation (MPICH) BuildRequires: mpich-devel %if %{with hdf5} BuildRequires: hdf5-mpich-devel %endif %if %{with cgns} BuildRequires: cgnslib-devel BuildRequires: hdf5-devel %endif %if %{with ptscotch} BuildRequires: ptscotch-mpich-devel %endif %if %{with scalapack} BuildRequires: scalapack-mpich-devel BuildRequires: blacs-mpich-devel %endif %if %{with mumps} BuildRequires: MUMPS-mpich-devel %endif %if %{with sundials} BuildRequires: sundials-mpich-devel %endif %if %{with hypre} BuildRequires: hypre-mpich-devel %endif %if %{with fftw} BuildRequires: fftw-devel BuildRequires: fftw-mpich-devel %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 BuildRequires: blas-devel BuildRequires: lapack-devel %else BuildRequires: openblas-devel %endif %endif %if 0%{?el6} Requires: mpich%{?_isa} %endif %description mpich PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. %package mpich-devel Summary: Portable Extensible Toolkit for Scientific Computation (MPICH) Requires: %{name}-mpich%{?_isa} = %{version}-%{release} %if 0%{?el7} # https://bugzilla.redhat.com/show_bug.cgi?id=1397192 Requires: mpich-devel %else Requires: mpich-devel%{?_isa} %endif %description mpich-devel Portable Extensible Toolkit for Scientific Computation (developer files). %endif ###### ############################################################################# %prep %setup -q -c pushd %{name}-%{version} %patch3 -p0 popd %if %{with arch64} cp -a %{name}-%{version} build64 pushd build64 %patch1 -p0 %if 0%{?fedora} || 0%{?rhel} >= 7 %patch2 -p0 %endif popd %endif pushd %{name}-%{version} find . -name 'setup.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python2}|' find . -name 'configure' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python2}|' find config -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python2}|' find src/benchmarks/streams -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python2}|' %patch0 -p0 %if 0%{?fedora} || 0%{?rhel} >= 7 %patch2 -p0 %endif popd %if %{with openmpi} cp -a %{name}-%{version} buildopenmpi_dir %endif %if %{with mpich} cp -a %{name}-%{version} buildmpich_dir %endif %build pushd %{name}-%{version} %configure CFLAGS="$CFLAGS -O3 -Wl,-z,now" CXXFLAGS="$CXXFLAGS -O3" FFLAGS="$FFLAGS -O3 -Wl,-z,now" LDFLAGS="$LDFLAGS -Wl,-z,now -fPIC" \ COPTFLAGS="$COPTFLAGS" CXXOPTFLAGS="$CXXOPTFLAGS" FOPTFLAGS="$FOPTFLAGS -Wl,-z,now -fPIC" \ --with-default-arch=0 --with-make=1 \ --with-single-library=1 \ --with-precision=double \ --with-petsc-arch=%{_arch} \ --with-clanguage=C \ --with-shared-libraries=1 \ --with-64-bit-indices=0 \ --with-fortran-interfaces=1 \ --with-windows-graphics=0 \ --CC=gcc \ --FC=gfortran \ --CXX=g++ \ --with-shared-ld=ld \ --with-pic=1 \ --with-clib-autodetect=0 \ --with-fortranlib-autodetect=0 \ --with-threadsafety=0 --with-log=1 \ %if 0%{?fedora} --with-cxxlib-autodetect=0 \ %endif %if %{with debug} --with-debugging=1 \ %else --with-debugging=0 \ %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 --with-blas-lib=-lblas \ --with-lapack-lib=-llapack \ --known-64-bit-blas-indices=0 \ %else --with-blas-lapack-lib=-lopenblas \ --known-64-bit-blas-indices=0 \ %endif %endif %if %{with superlu} --with-superlu=1 \ --with-superlu-include=%{_includedir}/SuperLU \ --with-superlu-lib=-lsuperlu \ %endif --with-mpiuni-fortran-binding=1 \ %if %{with mumps_serial} --with-mumps-serial=1 \ --with-mumps-include=%{_includedir}/MUMPS \ --with-mumps-lib="-lmumps_common -ldmumps -lpord" \ %endif --with-mpi=0 \ --with-x=1 \ --with-openmp=0 \ --with-metis=0 \ --with-hwloc=0 \ --with-ssl=0 \ %if 0%{?with_suitesparse} --with-suitesparse=1 \ --with-suitesparse-include=%{_includedir}/suitesparse \ --with-suitesparse-lib="-lumfpack -lklu -lcholmod -lamd" \ %endif %if %{with superlu} --with-superlu=1 \ --with-superlu-include=%{_includedir}/SuperLU \ --with-superlu-lib=-lsuperlu \ %endif --with-pthread=1 \ --with-valgrind=1 RPM_BUILD_NCPUS="`%{_bindir}/getconf _NPROCESSORS_ONLN`" make \ V=1 MAKE_NP=$RPM_BUILD_NCPUS PETSC_DIR=%{_builddir}/%{name}-%{version}/%{name}-%{version} PETSC_ARCH=%{_arch} all popd %if %{with arch64} pushd build64 %configure CFLAGS="$CFLAGS -O3 -Wl,-z,now" CXXFLAGS="$CXXFLAGS -O3" FFLAGS="$FFLAGS -O3 -Wl,-z,now" LDFLAGS="$LDFLAGS -Wl,-z,now -fPIC" \ COPTFLAGS="$COPTFLAGS" CXXOPTFLAGS="$CXXOPTFLAGS" FOPTFLAGS="$FOPTFLAGS -Wl,-z,now -fPIC" \ --with-default-arch=0 --with-make=1 \ --with-single-library=1 \ --with-precision=double \ --with-petsc-arch=%{_arch} \ --with-clanguage=C \ --with-shared-libraries=1 \ --with-64-bit-indices=1 \ --with-fortran-interfaces=1 \ --with-windows-graphics=0 \ --CC=gcc \ --FC=gfortran \ --CXX=g++ \ --with-shared-ld=ld \ --with-pic=1 \ --with-clib-autodetect=0 \ --with-fortranlib-autodetect=0 \ %if 0%{?fedora} --with-cxxlib-autodetect=0 \ %endif --with-mpi=0 \ --with-mpiuni-fortran-binding=1 \ --with-threadsafety=0 --with-log=1 \ %if %{with debug} --with-debugging=1 \ %else --with-debugging=0 \ %endif %if %{with blas64} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 --with-blas-lib="-lblas64" \ --with-lapack-lib="-llapack64" \ --known-64-bit-blas-indices=1 \ %else --with-blas-lapack-lib="-lopenblas64" \ --known-64-bit-blas-indices=1 \ %endif %endif --with-x=1 \ --with-openmp=0 \ --with-metis=0 \ --with-hwloc=0 \ --with-ssl=0 \ --with-pthread=1 \ --with-valgrind=1 RPM_BUILD_NCPUS="`%{_bindir}/getconf _NPROCESSORS_ONLN`" make \ V=1 MAKE_NP=$RPM_BUILD_NCPUS PETSC_DIR=%{_builddir}/%{name}-%{version}/build64 PETSC_ARCH=%{_arch} all popd %endif %if %{with openmpi} pushd buildopenmpi_dir %{_openmpi_load} %configure CFLAGS="$CFLAGS -O3 -Wl,-z,now" CXXFLAGS="$CXXFLAGS -O3" FFLAGS="$FFLAGS -O3 -Wl,-z,now" LDFLAGS="$LDFLAGS -Wl,-z,now -fPIC" \ COPTFLAGS="$COPTFLAGS" CXXOPTFLAGS="$CXXOPTFLAGS" FOPTFLAGS="$FOPTFLAGS -Wl,-z,now -fPIC" \ --with-default-arch=0 --with-make=1 \ --with-single-library=1 \ --with-precision=double \ --with-petsc-arch=%{_arch} \ --with-clanguage=C \ --with-shared-libraries=1 \ --with-64-bit-indices=0 \ --with-fortran-interfaces=1 \ --with-windows-graphics=0 \ --CC=%{_libdir}/openmpi/bin/mpicc \ --CXX=%{_libdir}/openmpi/bin/mpicxx \ --FC=%{_libdir}/openmpi/bin/mpif77 \ --with-shared-ld=ld \ --with-pic=1 \ --with-clib-autodetect=0 \ --with-fortranlib-autodetect=0 \ %if 0%{?fedora} --with-cxxlib-autodetect=0 \ %endif --with-threadsafety=0 --with-log=1 \ %if %{with debug} --with-debugging=1 \ %else --with-debugging=0 \ %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 --with-blas-lib="-lblas" \ --with-lapack-lib="-llapack" \ --known-64-bit-blas-indices=0 \ %else --with-blas-lapack-lib="-lopenblas" \ --known-64-bit-blas-indices=0 \ %endif %endif %if %{with scalapack} --with-scalapack=1 \ --with-scalapack-lib="-L%{_libmpidir} -lscalapack" \ --with-scalapck-include="" \ %endif %if %{with mpi} --with-mpi=1 \ --with-mpi-compilers=%{_libdir}/openmpi/bin/mpicc \ --with-mpiexec=%{_libdir}/openmpi/bin/mpiexec \ --with-mpiuni-fortran-binding=0 \ %endif %if %{with cgns} --with-cgns=1 \ --with-cgns-include="" \ --with-cgns-lib="-L%{_libmpidir} -lhdf5 -lcgns" \ %endif %if %{with hdf5} --with-hdf5=1 \ --with-hdf5-include="" \ --with-hdf5-lib="-L%{_libmpidir} -lhdf5" \ %endif %if %{with ptscotch} --with-ptscotch=1 \ --with-ptscotch-include="" \ --with-ptscotch-lib="-L%{_libmpidir} -lptscotch -lscotch -lptscotcherr -lscotcherr" \ %endif %if %{with mumps} --with-mumps=1 \ --with-mumps-include="" \ --with-mumps-lib="-L%{_libmpidir} -lmumps_common -ldmumps -lpord" \ %endif %if %{with sundials} --with-sundials=1 \ --with-sundials-include="" \ --with-sundials-lib="-L%{_libmpidir} -lsundials_nvecparallel -lsundials_cvode" \ %endif --with-x=1 \ --with-openmp=0 \ --with-metis=0 \ --with-hwloc=0 \ --with-ssl=0 \ %if %{with hypre} --with-hypre=1 \ --with-hypre-include=%{_incmpidir}/hypre \ --with-hypre-lib="-L%{_libmpidir} -lHYPRE" \ %endif %if %{with fftw} --with-fftw=1 \ --with-fftw-include="" \ --with-fftw-lib="-L%{_libmpidir} -lfftw3_mpi -lfftw3" \ %endif --with-pthread=1 \ --with-valgrind=1 RPM_BUILD_NCPUS="`%{_bindir}/getconf _NPROCESSORS_ONLN`" make \ V=1 MAKE_NP=$RPM_BUILD_NCPUS PETSC_DIR=%{_builddir}/%{name}-%{version}/buildopenmpi_dir PETSC_ARCH=%{_arch} all %{_openmpi_unload} popd %endif %if %{with mpich} pushd buildmpich_dir %{_mpich_load} %configure CFLAGS="$CFLAGS -O3 -Wl,-z,now" CXXFLAGS="$CXXFLAGS -O3" FFLAGS="$FFLAGS -O3 -Wl,-z,now" LDFLAGS="$LDFLAGS -Wl,-z,now -fPIC" \ COPTFLAGS="$COPTFLAGS" CXXOPTFLAGS="$CXXOPTFLAGS" FOPTFLAGS="$FOPTFLAGS -Wl,-z,now -fPIC" \ --with-default-arch=0 --with-make=1 \ --with-single-library=1 \ --with-precision=double \ --with-petsc-arch=%{_arch} \ --with-clanguage=C \ --with-shared-libraries=1 \ --with-64-bit-indices=0 \ --with-fortran-interfaces=1 \ --with-windows-graphics=0 \ --CC=%{_libdir}/mpich/bin/mpicc \ --CXX=%{_libdir}/mpich/bin/mpicxx \ --FC=%{_libdir}/mpich/bin/mpif77 \ --with-shared-ld=ld \ --with-pic=1 \ --with-clib-autodetect=0 \ --with-fortranlib-autodetect=0 \ %if 0%{?fedora} --with-cxxlib-autodetect=0 \ %endif --with-threadsafety=0 --with-log=1 \ %if %{with debug} --with-debugging=1 \ %else --with-debugging=0 \ %endif %if %{with blas} %ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64 --with-blas-lib=-lblas \ --with-lapack-lib=-llapack \ --known-64-bit-blas-indices=0 \ %else --with-blas-lapack-lib=-lopenblas \ --known-64-bit-blas-indices=0 \ %endif %endif %if %{with scalapack} --with-scalapack=1 \ --with-scalapack-lib="-L%{_libmpichdir} -lscalapack" \ --with-scalapck-include="" \ %endif %if %{with mpi} --with-mpi=1 \ --with-mpi-compilers=%{_libdir}/mpich/bin/mpicc \ --with-mpiexec=%{_libdir}/mpich/bin/mpiexec \ --with-mpiuni-fortran-binding=0 \ %endif %if %{with cgns} --with-cgns=1 \ --with-cgns-include="" \ --with-cgns-lib="-L%{_libmpichdir} -lhdf5 -lcgns" \ %endif %if %{with hdf5} --with-hdf5=1 \ --with-hdf5-include="" \ --with-hdf5-lib="-L%{_libmpichdir} -lhdf5" \ %endif %if %{with ptscotch} --with-ptscotch=1 \ --with-ptscotch-include="" \ --with-ptscotch-lib="-L%{_libmpichdir} -lptscotch -lscotch -lptscotcherr -lscotcherr" \ %endif %if %{with mumps} --with-mumps=1 \ --with-mumps-include="" \ --with-mumps-lib="-L%{_libmpichdir} -lmumps_common -ldmumps -lpord" \ %endif %if %{with sundials} --with-sundials=1 \ --with-sundials-include="" \ --with-sundials-lib="-L%{_libmpichdir} -lsundials_nvecparallel -lsundials_cvode" \ %endif --with-x=1 \ --with-openmp=0 \ --with-metis=0 \ --with-hwloc=0 \ --with-ssl=0 \ %if %{with hypre} --with-hypre=1 \ --with-hypre-include=%{_incmpichdir}/hypre \ --with-hypre-lib="-L%{_libmpichdir} -lHYPRE" \ %endif %if %{with fftw} --with-fftw=1 \ --with-fftw-include="" \ --with-fftw-lib="-L%{_libmpichdir} -lfftw3_mpi -lfftw3" \ %endif --with-pthread=1 \ --with-valgrind=1 RPM_BUILD_NCPUS="`%{_bindir}/getconf _NPROCESSORS_ONLN`" make \ V=1 MAKE_NP=$RPM_BUILD_NCPUS PETSC_DIR=%{_builddir}/%{name}-%{version}/buildmpich_dir PETSC_ARCH=%{_arch} all %{_mpich_unload} popd %endif %install pushd %{name}-%{version} mkdir -p $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}/%{name} install -pm 755 %{_arch}/lib/libpetsc.* $RPM_BUILD_ROOT%{_libdir} ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpetsc.so ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpetsc.so.3.7 install -pm 644 %{_arch}/include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name} cp -a include/* $RPM_BUILD_ROOT%{_includedir}/%{name} popd %if %{with arch64} pushd build64 mkdir -p $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}/%{name}64 install -pm 755 %{_arch}/lib/libpetsc64.* $RPM_BUILD_ROOT%{_libdir} ln -sf libpetsc64.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpetsc64.so ln -sf libpetsc64.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpetsc64.so.3.7 install -pm 644 %{_arch}/include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}64 cp -a include/* $RPM_BUILD_ROOT%{_includedir}/%{name} popd %endif %if %{with openmpi} pushd buildopenmpi_dir mkdir -p $RPM_BUILD_ROOT%{_libmpidir} $RPM_BUILD_ROOT%{_incmpidir}/%{name} install -pm 755 %{_arch}/lib/libpetsc.* $RPM_BUILD_ROOT%{_libmpidir} ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libmpidir}/libpetsc.so ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libmpidir}/libpetsc.so.3.7 install -pm 644 %{_arch}/include/*.h $RPM_BUILD_ROOT%{_incmpidir}/%{name} cp -a include/* $RPM_BUILD_ROOT%{_incmpidir}/%{name} popd %endif %if %{with mpich} pushd buildmpich_dir mkdir -p $RPM_BUILD_ROOT%{_libmpichdir} $RPM_BUILD_ROOT%{_incmpichdir}/%{name} install -pm 755 %{_arch}/lib/libpetsc.* $RPM_BUILD_ROOT%{_libmpichdir} ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libmpichdir}/libpetsc.so ln -sf libpetsc.so.%{version} $RPM_BUILD_ROOT%{_libmpichdir}/libpetsc.so.3.7 install -pm 644 %{_arch}/include/*.h $RPM_BUILD_ROOT%{_incmpichdir}/%{name} cp -a include/* $RPM_BUILD_ROOT%{_incmpichdir}/%{name} popd %endif # Move html documentation in _pkgdocdir pushd $RPM_BUILD_ROOT%{_includedir} mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/headers for i in `find . -name "*.h.html" -type f -print`; do mv $i $RPM_BUILD_ROOT%{_pkgdocdir}/headers done for i in `find . -name "*.html" -type f -print`; do mv $i $RPM_BUILD_ROOT%{_pkgdocdir}/headers done find . -name "Makefile" -type f -print | xargs /bin/rm -f popd cp -a %{name}-%{version}/docs/* $RPM_BUILD_ROOT%{_pkgdocdir} # %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %if %{with arch64} %post -n petsc64 /sbin/ldconfig %postun -n petsc64 /sbin/ldconfig %endif %if %{with check} %check export LD_LIBRARY_PATH=%{_libdir}:%{_builddir}/%{name}-%{version}/%{name}-%{version}/%{_arch}/lib export PETSC_DIR=%{_builddir}/%{name}-%{version}/%{name}-%{version} export PETSC_ARCH=%{_arch} %if %{with debug} export PETSCVALGRIND_OPTIONS=" --tool=memcheck --leak-check=yes --track-origins=yes" make -C %{name}-%{version} test MPIEXEC='%{_builddir}/%{name}-%{version}/%{name}-%{version}/bin/petscmpiexec -valgrind' %else make -C %{name}-%{version} test %endif %if %{with arch64} export LD_LIBRARY_PATH=%{_libdir}:%{_builddir}/%{name}-%{version}/build64/%{_arch}/lib export PETSC_DIR=%{_builddir}/%{name}-%{version}/build64 export PETSC_ARCH=%{_arch} ## 'make test' needs to link against -lpetsc ## Not elegant fix ln -s %{_builddir}/%{name}-%{version}/build64/%{_arch}/lib/libpetsc64.so %{_builddir}/%{name}-%{version}/build64/%{_arch}/lib/libpetsc.so %if %{with debug} export PETSCVALGRIND_OPTIONS=" --tool=memcheck --leak-check=yes --track-origins=yes" make -C build64 test MPIEXEC='%{_builddir}/%{name}-%{version}/build64/bin/petscmpiexec -valgrind' %else make -C build64 test %endif %endif %if %{with openmpi} %{_openmpi_load} export LD_LIBRARY_PATH=%{_libmpidir}:%{_libdir}:%{_builddir}/%{name}-%{version}/buildopenmpi_dir/%{_arch}/lib export PETSC_DIR=%{_builddir}/%{name}-%{version}/buildopenmpi_dir export PETSC_ARCH=%{_arch} export MPI_INTERFACE_HOSTNAME=localhost make -C buildopenmpi_dir test %{_openmpi_unload} %endif %if 0%{?fedora} || 0%{?rhel} >= 7 %if %{with mpich} %{_mpich_load} export LD_LIBRARY_PATH=%{_libmpichdir}:%{_libdir}:%{_builddir}/%{name}-%{version}/buildmpich_dir/%{_arch}/lib export PETSC_DIR=%{_builddir}/%{name}-%{version}/buildmpich_dir export PETSC_ARCH=%{_arch} export MPI_INTERFACE_HOSTNAME=localhost make -C buildmpich_dir test %{_mpich_unload} %endif %endif %endif %files %license %{name}-%{version}/LICENSE %{_libdir}/libpetsc.so.* %files devel %{_libdir}/libpetsc.so %{_includedir}/%{name}/ %files doc %license %{name}-%{version}/LICENSE %{_pkgdocdir}/ %if %{with arch64} %files -n petsc64 %license build64/LICENSE %{_libdir}/libpetsc64.so.* %files -n petsc64-devel %{_libdir}/libpetsc64.so %{_includedir}/%{name}64/ %endif %if %{with openmpi} %files openmpi %license buildopenmpi_dir/LICENSE %{_libmpidir}/libpetsc.so.* %files openmpi-devel %{_libmpidir}/libpetsc.so %{_incmpidir}/%{name}/ %endif %if %{with mpich} %files mpich %license buildmpich_dir/LICENSE %{_libmpichdir}/libpetsc.so.* %files mpich-devel %{_libmpichdir}/libpetsc.so %{_incmpichdir}/%{name}/ %endif %changelog * Sat Mar 25 2017 Antonio Trande - 3.7.5-3 - Rebuild for MUMPS-5.1.1 * Sat Feb 11 2017 Fedora Release Engineering - 3.7.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Wed Jan 04 2017 Antonio Trande - 3.7.5-1 - Update to 3.7.5 * Fri Dec 02 2016 Antonio Trande - 3.7.4-14 - Conditionalize mpich-devel%%{?_isa} (bz#1397192) * Tue Nov 01 2016 Antonio Trande - 3.7.4-13 - New architectures * Wed Oct 26 2016 Antonio Trande - 3.7.4-12 - Fix OpenMPI builds * Tue Oct 25 2016 Antonio Trande - 3.7.4-11 - Fix s390x builds again * Tue Oct 25 2016 Antonio Trande - 3.7.4-10 - Fix s390x builds * Mon Oct 24 2016 Antonio Trande - 3.7.4-9 - Build 64bit-int libs (bz#1382916) * Sat Oct 22 2016 Antonio Trande - 3.7.4-8 - Build 64bit-int libs (bz#1382916) * Fri Oct 21 2016 Antonio Trande - 3.7.4-7 - Install missing header files * Wed Oct 19 2016 Antonio Trande - 3.7.4-6 - Add the -O3 to restore vectorization over the RPM defaults - Remove gmp support * Thu Oct 13 2016 Antonio Trande - 3.7.4-5 - 64bit-int libs not built (bz#1382916) - Enable gmp and suitesparse support * Thu Oct 13 2016 Antonio Trande - 3.7.4-4 - superlu and fftw enabled - Fixed settings of compiler flags - Disable flags for "hardened" builds * Mon Oct 10 2016 Antonio Trande - 3.7.4-3 - Enabled fftw-mpi support (Fedora > 24) - Omitted PAPI (obsolete) - Omitted tetgen support (used with C++) * Sun Oct 09 2016 Antonio Trande - 3.7.4-2 - Default optimization level (-O2) * Sun Oct 09 2016 Antonio Trande - 3.7.4-1 - Update to 3.7.4 - PAPI support disabled (upstream advice) * Sat Oct 08 2016 Antonio Trande - 3.7.3-8 - Add tcsh as BR package - Patched for disabling petscnagupgrade.py check * Fri Oct 07 2016 Antonio Trande - 3.7.3-7 - Use Make for testing * Thu Oct 06 2016 Antonio Trande - 3.7.3-6 - Remove linkage to mpiblacs - Tests enabled * Thu Oct 06 2016 Antonio Trande - 3.7.3-5 - hwloc/metis (needs parmetis) disabled (upstream advice) - X support enabled - Libraries detection disabled * Wed Oct 05 2016 Antonio Trande - 3.7.3-4 - Fix library paths * Wed Oct 05 2016 Antonio Trande - 3.7.3-3 - Fix PTScotch * Wed Oct 05 2016 Antonio Trande - 3.7.3-2 - Disabled fftw support * Wed Sep 28 2016 Antonio Trande - 3.7.3-1 - Update to 3.7.3 - Remove module files * Tue Sep 13 2016 Antonio Trande - 3.7.2-12 - Fix MAKE_NP option - Remove --known-endian option - Use architecture condition for openblas - Fix unused-direct-shlib-dependency warnings * Fri Aug 26 2016 Antonio Trande - 3.7.2-11 - Use SuperLU on >=f25 only * Thu Aug 25 2016 Antonio Trande - 3.7.2-10 - Some fixes for epel6 builds - Add -O3 flag - Headers installed under a private directory - Use %%{_modulesdir} macro - Use 'openblas' instead of 'blas' * Wed Aug 10 2016 Antonio Trande - 3.7.2-9 - Fortran modules moved into devel sub-packages - Some fixes of SPEC file's lines - Set compiler/linker flags against PAPI-5.1.1 on epel6 * Thu Jul 28 2016 Dave Love - 3.7.2-8 - Support el6 - Add cgnslib support * Sat Jul 23 2016 Antonio Trande - 3.7.2-7 - Rebuild with Hypre support * Sun Jul 10 2016 Antonio Trande - 3.7.2-6 - Packed additional header files - Tests performed on EPEL7 * Mon Jun 27 2016 Antonio Trande - 3.7.2-5 - Perform tests one-by-one - Packaged all documentation files * Mon Jun 27 2016 Antonio Trande - 3.7.2-4 - Build OpenMPI/MPICH libraries - Fix known-endian option * Mon Jun 27 2016 Antonio Trande - 3.7.2-3 - Disable additional libraries - Build a minimal PETSC * Fri Jun 24 2016 Antonio Trande - 3.7.2-2 - Perform test * Sun Jun 19 2016 Antonio Trande - 3.7.2-1 - New package