diff --git a/sundials-3.1.1-set_superlumt64_name.patch b/sundials-3.1.1-set_superlumt64_name.patch new file mode 100644 index 0000000000000000000000000000000000000000..196898231db50252777b3935049764f5332c40a2 --- /dev/null +++ b/sundials-3.1.1-set_superlumt64_name.patch @@ -0,0 +1,12 @@ +--- config/FindSUPERLUMT.orig.cmake 2016-09-27 00:16:47.000000000 +0200 ++++ config/FindSUPERLUMT.cmake 2016-10-04 12:08:58.202988791 +0200 +@@ -60,7 +60,7 @@ + endif() + + # Set SuperLU_MT library name with thread type postfix +-set(SUPERLUMT_LIBRARY_NAME superlu_mt_${SUPERLUMT_THREAD_TYPE}) ++set(SUPERLUMT_LIBRARY_NAME superlumt64_d) + + if(MSVC) + set(CMAKE_FIND_LIBRARY_PREFIXES lib ${CMAKE_FIND_LIBRARY_PREFIXES}) + diff --git a/sundials-3.1.1-set_superlumt_name.patch b/sundials-3.1.1-set_superlumt_name.patch new file mode 100644 index 0000000000000000000000000000000000000000..8402cf7127c3662a74d99b8da2c1fac099cad9ef --- /dev/null +++ b/sundials-3.1.1-set_superlumt_name.patch @@ -0,0 +1,12 @@ +--- config/FindSUPERLUMT.orig.cmake 2016-09-27 00:16:47.000000000 +0200 ++++ config/FindSUPERLUMT.cmake 2016-10-04 12:08:58.202988791 +0200 +@@ -60,7 +60,7 @@ + endif() + + # Set SuperLU_MT library name with thread type postfix +-set(SUPERLUMT_LIBRARY_NAME superlu_mt_${SUPERLUMT_THREAD_TYPE}) ++set(SUPERLUMT_LIBRARY_NAME superlumt_d) + + if(MSVC) + set(CMAKE_FIND_LIBRARY_PREFIXES lib ${CMAKE_FIND_LIBRARY_PREFIXES}) + diff --git a/sundials-5.3.0.tar.gz b/sundials-5.3.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fcc8251ef640621b44d473b0ad02c575e1676b02 Binary files /dev/null and b/sundials-5.3.0.tar.gz differ diff --git a/sundials-change_petsc_variable.patch b/sundials-change_petsc_variable.patch new file mode 100644 index 0000000000000000000000000000000000000000..db04c5026c815fdbfdf10fdb1b9048bee77343ed --- /dev/null +++ b/sundials-change_petsc_variable.patch @@ -0,0 +1,11 @@ +--- a/config/FindPETSC.orig.cmake 2019-10-22 01:10:24.000000000 +0200 ++++ b/config/FindPETSC.cmake 2019-10-26 15:50:39.747116576 +0200 +@@ -478,7 +478,7 @@ + + include (FindPackageHandleStandardArgs) + find_package_handle_standard_args (PETSC +- REQUIRED_VARS PETSC_INCLUDES PETSC_LIBRARIES PETSC_EXECUTABLE_RUNS ++ REQUIRED_VARS PETSC_INCLUDES PETSC_LIBRARIES + VERSION_VAR PETSC_VERSION + FAIL_MESSAGE "PETSC could not be found. Be sure to set PETSC_DIR and PETSC_ARCH.") + diff --git a/sundials.spec b/sundials.spec new file mode 100644 index 0000000000000000000000000000000000000000..6a5d9061c47f1dccfed56b0743e6cd0926995d46 --- /dev/null +++ b/sundials.spec @@ -0,0 +1,340 @@ +%bcond_with debug +%bcond_with pthread + +%global __cmake_in_source_build 1 +%define _legacy_common_support 1 +%define _lto_cflags %{nil} + +%global blaslib openblas +%global blasvar o + +%global with_hypre 1 + +%global with_petsc 0 + +%global with_superlumt 0 + +%global with_superludist 0 + +%global with_sercheck 1 + +%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 +%global with_fortran 1 +%else +%global with_fortran 0 +%endif + +Summary: Suite of nonlinear solvers +Name: sundials +Version: 5.3.0 +Release: 1 +License: BSD +URL: https://github.com/LLNL/%{name} +Source0: https://github.com/LLNL/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz + +Patch0: %{name}-3.1.1-set_superlumt_name.patch + +Patch1: %{name}-3.1.1-set_superlumt64_name.patch + +Patch2: %{name}-change_petsc_variable.patch + +BuildRequires: gcc-gfortran +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: %{?dts}gcc, %{?dts}gcc-c++ +BuildRequires: cmake3 >= 3.10 +BuildRequires: %{blaslib}-devel +%if 0%{?with_superlumt} +%ifarch s390x x86_64 %{power64} aarch64 +BuildRequires: SuperLUMT64-devel +%endif +%ifarch %{arm} %{ix86} +BuildRequires: SuperLUMT-devel +%endif +%endif +BuildRequires: suitesparse-devel + +Requires: gcc-gfortran%{?_isa} + +%description +SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers +for use in writing mathematical software. + +SUNDIALS was implemented with the goal of providing robust time integrators +and nonlinear solvers that can easily be incorporated into existing simulation +codes. The primary design goals were to require minimal information from the +user, allow users to easily supply their own data structures underneath the +solvers, and allow for easy incorporation of user-supplied linear solvers and +preconditioners. + +%package devel +Summary: Suite of nonlinear solvers (developer files) +Requires: %{name}%{?_isa} = %{version}-%{release} +%description devel +SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers +for use in writing mathematical software. +This package contains the developer files (.so file, header files). + +%package doc +Summary: Suite of nonlinear solvers (documentation) +BuildArch: noarch +%description doc +SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers +for use in writing mathematical software. +This package contains the documentation files. + +%prep +%setup -qc + +pushd %{name}-%{version} + +%ifarch s390x x86_64 %{power64} aarch64 +%patch1 -p0 -b .set_superlumt64_name +%endif +%ifarch %{arm} %{ix86} +%patch0 -p0 -b .set_superlumt_name +%endif + +##Set serial library's paths +sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/nvector|g' src/nvector/serial/CMakeLists.txt +sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/nvector|g' src/nvector/openmp/CMakeLists.txt +sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/nvector|g' src/nvector/pthreads/CMakeLists.txt + +mv src/arkode/README.md src/README-arkode.md +mv src/cvode/README.md src/README-cvode.md +mv src/cvodes/README.md src/README-cvodes.md +mv src/ida/README.md src/README-ida.md +mv src/idas/README.md src/README.idas.md +mv src/kinsol/README.md src/README-kinsol.md +popd + +%build +pushd sundials-%{version} + +mkdir -p build && cd build + +export LIBBLASLINK=-l%{blaslib}%{blasvar} +export INCBLAS=%{_includedir}/%{blaslib} + +%if 0%{?with_superlumt} +%ifarch s390x x86_64 %{power64} aarch64 +export LIBSUPERLUMTLINK=-lsuperlumt64_d +%endif +%ifarch %{arm} %{ix86} +export LIBSUPERLUMTLINK=-lsuperlumt_d +%endif +%endif + +%if %{with debug} +%undefine _hardened_build +export CFLAGS=" " +export FFLAGS=" " +%global _cmake cmake3 +%_cmake \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DCMAKE_BUILD_TYPE:STRING=Debug \ + -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ + -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ + -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -lklu $LIBBLASLINK $LIBSUPERLUMTLINK" \ +%else +export CFLAGS="%{build_cflags}" +export CFLAGS="%{build_fflags}" +%cmake3 \ +%endif +%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 + -DSUNDIALS_INDEX_SIZE:STRING=64 \ + -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu64.so \ + -DAMD_LIBRARY=%{_libdir}/libamd64.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ + -DBTF_LIBRARY=%{_libdir}/libbtf64.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ + -DCOLAMD_LIBRARY=%{_libdir}/libcolamd64.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ + -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ +%else + -DSUNDIALS_INDEX_SIZE:STRING=32 \ + -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu.so \ + -DAMD_LIBRARY=%{_libdir}/libamd.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ + -DBTF_LIBRARY=%{_libdir}/libbtf.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ + -DCOLAMD_LIBRARY=%{_libdir}/libcolamd.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ + -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ +%endif + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ + -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ + -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -lklu $LIBBLASLINK $LIBSUPERLUMTLINK" \ + -DLAPACK_ENABLE:BOOL=OFF \ + -DCMAKE_MODULE_LINKER_FLAGS:STRING="%{__global_ldflags}" \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib} \ + -DPYTHON_EXECUTABLE:FILEPATH=%{__python3} \ + -DEXAMPLES_ENABLE_CXX:BOOL=ON -DEXAMPLES_ENABLE_C:BOOL=ON \ + -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ + -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=OFF \ + -DMPI_ENABLE:BOOL=OFF \ +%if 0%{?with_fortran} + -DF77_INTERFACE_ENABLE:BOOL=ON \ + -DEXAMPLES_ENABLE_F77:BOOL=ON \ + -DF2003_INTERFACE_ENABLE:BOOL=ON \ + -DEXAMPLES_ENABLE_F90:BOOL=ON \ + -DFortran_INSTALL_MODDIR:PATH=%{_fmoddir}/%{name} \ +%endif + -DUSE_GENERIC_MATH:BOOL=ON \ + -DOPENMP_ENABLE:BOOL=ON \ +%if %{with pthread} + -DPTHREAD_ENABLE:BOOL=ON \ +%endif + -DSUNDIALS_PRECISION:STRING=double \ +%if 0%{?with_superlumt} + -DSUPERLUMT_ENABLE:BOOL=ON \ + -DSUPERLUMT_INCLUDE_DIR:PATH=%{_includedir}/SuperLUMT \ + -DSUPERLUMT_LIBRARY_DIR:PATH=%{_libdir} \ + -DSUPERLUMT_THREAD_TYPE:STRING=OpenMP \ +%endif + -DSUPERLUDIST_ENABLE:BOOL=OFF \ + -DHYPRE_ENABLE:BOOL=OFF \ + -DEXAMPLES_INSTALL:BOOL=OFF \ + -DSUNDIALS_BUILD_WITH_MONITORING:BOOL=ON -Wno-dev .. + +%make_build V=1 +cd .. +popd + +%install +%make_install -C sundials-%{version}/build + +# Remove files in bad position +rm -f %{buildroot}%{_prefix}/LICENSE +rm -f %{buildroot}%{_includedir}/sundials/LICENSE +rm -f %{buildroot}%{_includedir}/sundials/NOTICE + +# Remove static files +find %{buildroot} -name '*.a' -exec rm -f {} ';' + +%ldconfig_scriptlets + +%check +%if 0%{?with_sercheck} +pushd sundials-%{version}/build +%if %{with debug} +export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{_libdir} +export OMPI_MCA_rmaps_base_oversubscribe=yes +ctest3 --force-new-ctest-process -VV -j1 --output-on-failure --debug +%else +export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{_libdir} +export OMPI_MCA_rmaps_base_oversubscribe=yes +ctest3 --force-new-ctest-process -j1 +%endif +popd +%endif +## if with_sercheck + +%files +%license sundials-%{version}/LICENSE +%doc sundials-%{version}/README.md +%doc sundials-%{version}/src/README-arkode.md +%doc sundials-%{version}/src/README-cvode.md +%doc sundials-%{version}/src/README-cvodes.md +%doc sundials-%{version}/src/README-ida.md +%doc sundials-%{version}/src/README.idas.md +%doc sundials-%{version}/src/README-kinsol.md +%doc sundials-%{version}/NOTICE +%{_libdir}/libsundials_ida*.so.* +%{_libdir}/libsundials_cvode*.so.* +%{_libdir}/libsundials_arkode*.so.* +%{_libdir}/libsundials_kinsol.so.* +%{_libdir}/libsundials_nvecserial.so.* +%{_libdir}/libsundials_nvecopenmp.so.* +%{_libdir}/libsundials_nvecmanyvector.so.* +%if %{with pthread} +%{_libdir}/libsundials_nvecpthreads.so.* +%endif +%{_libdir}/libsundials_sunmatrix*.so.* +%{_libdir}/libsundials_sunlinsol*.so.* +%{_libdir}/libsundials_sunnonlinsol*.so.* +%if 0%{?with_fortran} +%{_libdir}/libsundials_f*_mod.so.* +%{_libdir}/libsundials_fnvecserial.so.* +%{_libdir}/libsundials_fnvecopenmp.so.* +%if %{with pthread} +%{_libdir}/libsundials_fnvecpthreads.so.* +%endif +%{_libdir}/libsundials_fsunlinsolband.so.* +%{_libdir}/libsundials_fsunlinsoldense.so.* +#%{_libdir}/libsundials_fsunlinsolklu.so.* +%{_libdir}/libsundials_fsunlinsolpcg.so.* +%{_libdir}/libsundials_fsunlinsolspbcgs.so.* +%{_libdir}/libsundials_fsunlinsolspfgmr.so.* +%{_libdir}/libsundials_fsunlinsolspgmr.so.* +%{_libdir}/libsundials_fsunlinsolsptfqmr.so.* +%if 0%{?with_superlumt} +%{_libdir}/libsundials_fsunlinsolsuperlumt.so.* +%endif +%{_libdir}/libsundials_fsunmatrixband.so.* +%{_libdir}/libsundials_fsunmatrixdense.so.* +%{_libdir}/libsundials_fsunmatrixsparse.so.* +%{_libdir}/libsundials_fsunnonlinsolfixedpoint.so.* +%{_libdir}/libsundials_fsunnonlinsolnewton.so.* +%endif + +%files devel +%{_libdir}/libsundials_ida*.so +%{_libdir}/libsundials_cvode*.so +%{_libdir}/libsundials_arkode*.so +%{_libdir}/libsundials_kinsol.so +%{_libdir}/libsundials_nvecserial.so +%{_libdir}/libsundials_nvecopenmp.so +%{_libdir}/libsundials_nvecmanyvector.so +%if %{with pthread} +%{_libdir}/libsundials_nvecpthreads.so +%endif +%{_libdir}/libsundials_sunmatrix*.so +%{_libdir}/libsundials_sunlinsol*.so +%{_libdir}/libsundials_sunnonlinsol*.so +%if 0%{?with_fortran} +%{_includedir}/sundials/sundials_fconfig.h +%{_libdir}/libsundials_f*_mod.so +%{_fmoddir}/%{name}/ +%{_libdir}/libsundials_fnvecserial.so +%{_libdir}/libsundials_fnvecopenmp.so +%if %{with pthread} +%{_libdir}/libsundials_fnvecpthreads.so +%endif +%{_libdir}/libsundials_fsunlinsolband.so +%{_libdir}/libsundials_fsunlinsoldense.so +#%{_libdir}/libsundials_fsunlinsolklu.so +%{_libdir}/libsundials_fsunlinsolpcg.so +%{_libdir}/libsundials_fsunlinsolspbcgs.so +%{_libdir}/libsundials_fsunlinsolspfgmr.so +%{_libdir}/libsundials_fsunlinsolspgmr.so +%{_libdir}/libsundials_fsunlinsolsptfqmr.so +%if 0%{?with_superlumt} +%{_libdir}/libsundials_fsunlinsolsuperlumt.so +%endif +%{_libdir}/libsundials_fsunmatrixband.so +%{_libdir}/libsundials_fsunmatrixdense.so +%{_libdir}/libsundials_fsunmatrixsparse.so +%{_libdir}/libsundials_fsunnonlinsolfixedpoint.so +%{_libdir}/libsundials_fsunnonlinsolnewton.so +%endif +%{_includedir}/nvector/ +%{_includedir}/sunmatrix/ +%{_includedir}/sunlinsol/ +%{_includedir}/sunnonlinsol/ +%{_includedir}/arkode/ +%{_includedir}/cvode/ +%{_includedir}/cvodes/ +%{_includedir}/ida/ +%{_includedir}/idas/ +%{_includedir}/kinsol/ +%{_includedir}/sundials/ + +%files doc +%license sundials-%{version}/LICENSE +%doc sundials-%{version}/README.md +%doc sundials-%{version}/NOTICE +%doc sundials-%{version}/doc/cvode/cv_guide.pdf +%doc sundials-%{version}/doc/kinsol/kin_guide.pdf +%doc sundials-%{version}/doc/cvodes/cvs_guide.pdf +%doc sundials-%{version}/doc/ida/ida_guide.pdf +%doc sundials-%{version}/doc/arkode/* + +%changelog +* Wed May 12 2021 caodongxia - 5.3.0-1 +- Package init diff --git a/sundials.yaml b/sundials.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d866c16d5af97905edd61d6e22676a5515b23a40 --- /dev/null +++ b/sundials.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: LLNL/sundials +tag_prefix: "v^" +seperator: "."