# Copyright (c) 2014 Dave Love, University of Liverpool # Copyright (c) 2018 Dave Love, University of Manchester # MIT licence, per Fedora policy %if 0%{?el6} %ifarch ppc64 %bcond_with mpich %else %bcond_without mpich %endif %else %bcond_without mpich %endif %if 0%{?fedora} %bcond_without openmpi %bcond_without mpich %endif %bcond_with check %{!?openblas_arches:%global openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64} %ifarch %{openblas_arches} %global use_openblas 1 %else %global use_openblas 0 %endif Name: hypre Version: 2.15.1 Release: 5%{?dist} Summary: High performance matrix preconditioners # FEI_mv/ml/src/Include/ml_vampir.h has a GPL notice, but it doesn't # look copyright-significant. License: LGPLv2 URL: http://www.llnl.gov/casc/hypre/ # The one referred to above is under LLNL, but the hypre-space one has # a useful commit history. Source: https://github.com/hypre-space/hypre/archive/v%version.tar.gz#/%{name}-%{version}.tar.gz # Make library .so.0.0, not -.so Patch1: hypre-soname.patch # Don't use hostname for tests and use two MPI processes Patch2: hypre-test.patch BuildRequires: gcc-c++ gcc-gfortran automake libtool libtool-ltdl-devel BuildRequires: SuperLU-devel %if %use_openblas BuildRequires: openblas-devel %else BuildRequires: atlas-devel %endif %global __requires_exclude libHYPRE.* %{?filter_setup: %filter_from_requires /libHYPRE/d %filter_setup } %global desc \ Hypre is a set of matrix preconditioning libraries to aid in the\ solution of large systems of linear equations. %description %desc %package devel Summary: Development files for %name Requires: %{?name}%{?_isa} = %{version}-%{release} Requires: SuperLU-devel%{?_isa} %if %use_openblas Requires: openblas-devel%{?_isa} %else Requires: atlas-devel %endif %description devel Development files for %name %if %{with openmpi} %package openmpi Summary: High performance matrix preconditioners - openmpi Requires: openmpi%{?_isa} BuildRequires: superlu_dist-openmpi-devel ptscotch-openmpi-devel %description openmpi %desc This is the openmpi version. %package openmpi-devel Summary: Development files for %name-openmpi Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: openmpi-devel%{?_isa} superlu_dist-openmpi-devel%{?_isa} Requires: ptscotch-openmpi-devel%{?_isa} %if %use_openblas Requires: openblas-devel%{?_isa} %else Requires: atlas-devel%{?_isa} %endif %description openmpi-devel Development files for %name-openmpi %endif %if %{with mpich} %package mpich Summary: High performance matrix preconditioners - mpich Requires: mpich%{?_isa} BuildRequires: superlu_dist-mpich-devel ptscotch-mpich-devel %description mpich %desc This is the mpich version. %package mpich-devel Summary: Development files for %name-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 Requires: superlu_dist-mpich-devel%{?_isa} ptscotch-mpich-devel%{?_isa} %if %use_openblas Requires: openblas-devel%{?_isa} %else Requires: atlas-devel%{?_isa} %endif %description mpich-devel Development files for %name-mpich %endif %package doc Summary: Documentation for hypre BuildArch: noarch %description doc Documentation for hypre %prep %setup -q -n %name-%version %patch1 -p1 -b .soname %patch2 -p1 -b .test find \( -name \*.[ch] -o -name \*.cxx \) -perm /=x -exec chmod 0644 {} \; %if %{with openmpi} cp -a src openmpi %endif %if %{with mpich} cp -a src mpich %endif %build %if %use_openblas %global lalibs --with-blas-libs=openblas --with-lapack-libs=openblas \\\ --with-blas-lib-dirs=%_libdir --with-lapack-lib-dirs=%_libdir %else %if 0%{?el6} %global lalibs --with-blas-libs=-f77blas --with-lapack-libs=llapack \\\ --with-blas-lib-dirs=%_libdir/atlas --with-lapack-lib-dirs=%_libdir/atlas %else %global lalibs --with-blas-libs=satlas --with-lapack-libs=satlas \\\ --with-blas-lib-dirs=%_libdir/atlas --with-lapack-lib-dirs=%_libdir/atlas %endif %endif pushd src # -O3 seems like a good idea for vectorization, at least. We need LIBS to # link the shared lib correctly. export LIBS='-lsuperlu -fopenmp' %configure --without-MPI --with-timing --with-openmp --enable-shared=yes \ %lalibs \ --with-superlu --with-superlu-include=%_includedir/SuperLU \ --with-superlu-libs=superlu \ CFLAGS="$CFLAGS -O3" %make_build popd %global do_mpi_build \ %configure --prefix=$MPI_HOME --with-MPI --with-MPI-include=$MPI_INCLUDE \\\ --with-MPI-lib-dirs=$MPI_LIB --with-timing --without-openmp \\\ %lalibs \\\ --enable-shared=yes --with-fei --with-mli \\\ --with-dsuperlu --with-dsuperlu-include=$MPI_INCLUDE/superlu_dist \\\ --with-dsuperlu-libs='superlu_dist ptscotch' \\\ CFLAGS="$CFLAGS -O3" \ %make_build export LIBS='-lsuperlu_dist -lptscotch' %if %{with openmpi} pushd openmpi %_openmpi_load %do_mpi_build %_openmpi_unload popd %endif %if %{with mpich} pushd mpich %_mpich_load %do_mpi_build %_mpich_unload popd %endif %check # Currently seeing inconsistent hangs on koji (as for superlu_dist). # Assume it doesn't deadlock in realistic situations. %if %{with check} %if %{with openmpi} export LD_LIBRARY_PATH=$(pwd)/openmpi/hypre/lib export OMPI_MCA_orte_allocation_required=0 %_openmpi_load pushd openmpi/test %make_build # A random selection to check, rather than all possibilities. (The # relevant binaries aren't built for all the TEST_...s.) ./runtest.sh TEST_ij/*sh popd %endif %endif %install make -C src install HYPRE_INSTALL_DIR=%{buildroot}%{_prefix} \ HYPRE_LIB_INSTALL=%{buildroot}%{_libdir} \ HYPRE_INC_INSTALL=%{buildroot}%{_includedir}/%{name} %if %{with openmpi} %_openmpi_load make -C openmpi install HYPRE_INSTALL_DIR=%{buildroot}$MPI_HOME \ HYPRE_LIB_INSTALL=%{buildroot}$MPI_LIB \ HYPRE_INC_INSTALL=%{buildroot}$MPI_INCLUDE/%{name} %_openmpi_unload %endif %if %{with mpich} %_mpich_load make -C mpich install HYPRE_INSTALL_DIR=%{buildroot}$MPI_HOME \ HYPRE_LIB_INSTALL=%{buildroot}$MPI_LIB \ HYPRE_INC_INSTALL=%{buildroot}$MPI_INCLUDE/%{name} %_mpich_unload %endif %ldconfig_scriptlets %files %doc CHANGELOG %license COPYING.LESSER COPYRIGHT src/docs/copyright.txt %{_libdir}/libHYPRE.so.* %files devel %{_libdir}/libHYPRE.so %{_includedir}/%{name} %if %{with openmpi} %files openmpi %doc CHANGELOG %license COPYING.LESSER COPYRIGHT src/docs/copyright.txt %{_libdir}/openmpi/lib/libHYPRE.so.* %files openmpi-devel %{_libdir}/openmpi/lib/libHYPRE.so %{_includedir}/openmpi-%_arch/%{name} %endif %if %{with mpich} %files mpich %doc CHANGELOG %license COPYING.LESSER COPYRIGHT src/docs/copyright.txt %{_libdir}/mpich/lib/libHYPRE.so.* %files mpich-devel %{_libdir}/mpich/lib/libHYPRE.so %{_includedir}/mpich-%_arch/%{name} %endif %files doc %doc CHANGELOG %license COPYING.LESSER COPYRIGHT src/docs/copyright.txt %doc docs/*.pdf %changelog * Thu Feb 14 2019 Orion Poplawski - 2.15.1-5 - Rebuild for openmpi 3.1.3 * Fri Feb 01 2019 Fedora Release Engineering - 2.15.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Mon Dec 3 2018 Dave Love - 2.15.1-3 - Revert omitting builtin BLAS, which is namedspaced * Mon Dec 3 2018 Dave Love - 2.15.1-2 - Fix FTBFS with current superlu_dist [#1654932] - Clean up configuration and avoid builtin BLAS * Wed Nov 21 2018 Dave Love - 2.15.1-1 - New version, removing hypre_PFMGSetupInterpOp_CC0, hypre_finalize, hypre_init, which appear actually to be internal, so soname unchanged - Avoid tests * Thu Jul 19 2018 Sandro Mani - 2.14.0-4 - Rebuild (scotch) * Fri Jul 13 2018 Fedora Release Engineering - 2.14.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Tue Apr 24 2018 Antonio Trande - 2.14.0-2 - Build hypre-openmpi on s390x (#1571450) * Fri Mar 23 2018 Dave Love - 2.14.0-1 - Update to 2.14.0 (#1557645) - Reinstate superlu and use superlu_dist * Wed Mar 07 2018 Adam Williamson - 2.13.0-6 - Rebuild to fix GCC 8 mis-compilation See https://da.gd/YJVwk ("GCC 8 ABI change on x86_64") * Fri Feb 16 2018 Dave Love - 2.13.0-5 - Fix openblas BR (#1545197) * Wed Feb 07 2018 Fedora Release Engineering - 2.13.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild * Mon Nov 6 2017 Dave Love - 2.13.0-3 - Disable tests on ix86 temporarily * Sat Nov 4 2017 Dave Love - 2.13.0-3 - Revert last change in favour of updated superlu_dist * Fri Nov 3 2017 Dave Love - 2.13.0-2 - Fix link failure against parmetis * Mon Oct 30 2017 Dave Love - 2.13.0-1 - New version - Configure --with-mli for compatibility - Configure with superlu - Remove -Dhypre_dgesvd=dgesvd_ bodge - Bump soname major version (due to added elements in structs) * Wed Aug 02 2017 Fedora Release Engineering - 2.11.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Wed Jul 26 2017 Fedora Release Engineering - 2.11.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Fri Jul 07 2017 Igor Gnatenko - 2.11.2-2 - Rebuild due to bug in RPM (RHBZ #1468476) * Thu May 4 2017 Dave Love - 2.11.2-1 - New version * Wed Mar 15 2017 Orion Poplawski - 2.11.1-8 - Build with openblas on all available architectures * Fri Feb 10 2017 Fedora Release Engineering - 2.11.1-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Thu Dec 1 2016 Dave Love - 2.11.1-6 - Conditionalize mpich-devel%%{?_isa} * Fri Oct 21 2016 Orion Poplawski - 2.11.1-5 - Rebuild for openmpi 2.0 * Fri Jul 22 2016 Dave Love - 2.11.1-4 - Ship manuals correctly * Wed Jul 20 2016 Dave Love - 2.11.1-3 - Avoid openmpi on s390 - Patch to not call hostname in test.sh and use two procs * Mon Jul 11 2016 Dave Love - 2.11.1-2 - Fix openblas conditionals * Mon Jul 11 2016 Dave Love - 2.11.1-1 - New version - Update URL - Drop previous patches -- make single library with new soversion - Adjust configure/build - Run tests - Compile with -O3 * Fri Apr 1 2016 Dave Love - 2.11.0-1 - New version - Adjust hypre-shlibs-interlink.patch and %%lalibs * Mon Dec 14 2015 Dave Love - 2.10.1-2 - Fix use of %%license for -mpich package * Tue Dec 1 2015 Dave Love - 2.10.1-1 - New version - Remove -Wl,-z,defs from configure to avoid link error (patch5) - Fix use of atlas on non-x86 - Fix %%license conditional * Sun Jul 5 2015 Dave Love - 2.9.1a-1 - New version, without babel stuff - Modify patches - Use %%license * Fri Feb 20 2015 Dave Love - 2.8.0b-16 - Conditionalize out mpich on ppc64 el6 - Use -f with libtoolize (for f22) - Fix some missing _isa in requires - Drop unnecessary configure patch - Run tests - Small simplifications * Wed Feb 4 2015 Dave Love - 2.8.0b-15 - Fix requires * Mon Dec 29 2014 Dave Love - 2.8.0b-15 - Build without internal superlu * Thu Dec 11 2014 Dave Love - 2.8.0b-14 - mpich version * Fri Nov 28 2014 Dave Love - 2.8.0b-13 - Initial packaging, following Debian, including patches High release number to avoid clash with old SuSE-based version