commit arpack-ng for openSUSE:Factory
Hello community, here is the log from the commit of package arpack-ng for openSUSE:Factory checked in at 2020-12-21 10:24:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/arpack-ng (Old) and /work/SRC/openSUSE:Factory/.arpack-ng.new.5145 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "arpack-ng" Mon Dec 21 10:24:39 2020 rev:16 rq:857140 version:3.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/arpack-ng/arpack-ng.changes 2020-07-01 14:26:27.686724115 +0200 +++ /work/SRC/openSUSE:Factory/.arpack-ng.new.5145/arpack-ng.changes 2020-12-21 10:27:10.740235762 +0100 @@ -1,0 +2,63 @@ +Thu Dec 10 00:31:22 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com> + +- Update to version 3.8.0: + * Bug fixes: + - bmat return "G" instead of "B" for generalized matrix in + arpack.hpp. + - pass arrays of chars as scalar in fortran calls in order not + to crash when calling subroutines through icb interface. + - fix 'Unknown CMake command "check_symbol_exists".' when + ICB=ON. + - fix arpackdef.h (resp. arpackicb.h) must be included only by + C/C++ (resp. F77/F90). + - iparam/ipntr sizes may change depending on cases. + - ILP64 support: using debug_c and stat_c. + - fix check precision which may fail with some ATLAS versions. + - fix 'eval: Syntax error: "(" unexpected' error at build + time. + - ICB using rvec/select: rvec/select turned to integer bool + should be, but, is not always supported (depend on compiler, + options). + * arpackmm: + - extract arpackSolver.hpp from arpakmm.cpp. + - arpackSolver/arpackmm: switch eigen version to 3.3. + - arpackmm: add --slvItrPC option (PC: Jacobi, ILU). + - arpackmm: add --slv LLT LDLT (for SPD matrices). + - arpackmm: add --simplePrec option (to enable use of s*upd). + - arpackmm: add --dense option. + * pyarpack: python binding based on Boost.Python.Numpy exposing + C++ API. + * autotools: provide *.cmake files (in addition to *.pc file). + * Only build shared libraries by default. To build static + libraries, use --enable-static (autotools) or + -DBUILD_SHARED_LIBS=OFF (cmake). + * [CLEAN] arpackSolver API: more convenient, suppress template + parameters when possible. + * Add parpack.pc and arpackSolver.pc. + * Support of gfortran 10. +- Drop patches incorporated upstream: + * arpack-ng-gcc10.patch. + * arpack-ng-double-comparison.patch. +- New patches: + * arpack-ng-python-module-installdir.patch to move python + module to standard python sitearch. +- Enable pyarpack: a python interface for arpack-ng, and split it + out into a new package: python3-arpack-ng; this module is only + built once -- for the serial flavor: + * Disabled for i586 (gh#opencollab/arpack-ng#289). + * Disbaled for openSUSE < 1550: boost too old. +- Add _constraints to allow enough memory (12 GB) and disk size + (3 GB) required to build pyarpack (only for x86_64, aarch64). +- Switch to building with cmake: + * Add BuildRequires: cmake. + * Pass -DCMAKE_INSTALL_<foo> options to suggest correct install + paths for different flavors. + * CMAKE_CXX_COMPILER_VERSION: GCC version is required to build + pyarpack + * To work around broken rpath handling in Leap 15.2's macros, + pass `-DCMAKE_SKIP_RPATH=OFF -DCMAKE_SKIP_INSTALL_RPATH=ON` + (do this on all distro versions as it doesn't hurt) +- Use arpack-ng-%{version} as the naming format for the source + tarball. + +------------------------------------------------------------------- Old: ---- 3.7.0.tar.gz arpack-ng-double-comparison.patch arpack-ng-gcc10.patch New: ---- _constraints arpack-ng-3.8.0.tar.gz arpack-ng-python-module-installdir.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ arpack-ng.spec ++++++ --- /var/tmp/diff_new_pack.qlYpF1/_old 2020-12-21 10:27:11.528236655 +0100 +++ /var/tmp/diff_new_pack.qlYpF1/_new 2020-12-21 10:27:11.528236655 +0100 @@ -56,6 +56,12 @@ %{bcond_with hpc} %endif +%if "%flavor" == "openmpi4" +%define mpi_family openmpi +%define mpi_ver 4 +%{bcond_with hpc} +%endif + # openmpi 1 was called just "openmpi" in Leap 15.x/SLE15 %if 0%{?suse_version} >= 1550 || "%{mpi_family}" != "openmpi" || "%{mpi_ver}" != "1" %define mpi_ext %{?mpi_ver} @@ -77,27 +83,54 @@ %global my_incdir %{_includedir} %endif +# 3. OOM on i586: https://github.com/opencollab/arpack-ng/issues/289 +%ifarch i586 +%bcond_with pyarpack +%else +# 2. Boost too old for 15.2 and earlier +%if 0%{?suse_version} < 1550 +%bcond_with pyarpack +%else +# 1. Build python module once: for serial flavor only +%if %{with mpi} +%bcond_with pyarpack +%else +%bcond_without pyarpack +%endif +# /1 +%endif +# /2 +%endif +# /3 + Name: %{pkgname} -Version: 3.7.0 +Version: 3.8.0 Release: 0 Summary: Fortran77 subroutines for solving large scale eigenvalue problems License: BSD-3-Clause Group: System/Libraries URL: https://github.com/opencollab/arpack-ng -Source0: https://github.com/opencollab/arpack-ng/archive/%{version}.tar.gz -# PATCH-FIX-UPSTREAM arpack-ng-gcc10.patch gh#opencollab/arpack-ng#239 gh#opencollab/arpack-ng#245 badshah400@gmail.com -- Fix building against GCC 10, patches taken from upstream commits -Patch0: arpack-ng-gcc10.patch -# PATCH-FIX-UPSTREAM arpack-ng-double-comparison.patch gh#opencollab/arpack-ng#269 badshah400@gmail.com -- Compare difference to zerop to test float equivalence in TESTS/bug_79_double_complex.f; fixes build failure for i586 -Patch1: arpack-ng-double-comparison.patch +Source0: https://github.com/opencollab/arpack-ng/archive/%{version}.tar.gz#/arpack-ng-%{version}.tar.gz +# PATCH-FEATURE-OPENSUSE arpack-ng-python-module-installdir.patch badshah400@gmail.com -- Install python module to standard python sitearch instead of libdir +Patch0: arpack-ng-python-module-installdir.patch %if %{with mpi} BuildRequires: %{mpi_family}%{?mpi_ext}-devel %endif -BuildRequires: autoconf BuildRequires: blas-devel +BuildRequires: cmake +BuildRequires: gcc-c++ BuildRequires: gcc-fortran BuildRequires: lapack-devel +BuildRequires: libopenblas_pthreads-devel BuildRequires: libtool BuildRequires: pkg-config +BuildRequires: pkgconfig(eigen3) +%if %{with pyarpack} +BuildRequires: libboost_numpy3-devel +BuildRequires: libboost_python3-devel +BuildRequires: python3-devel +BuildRequires: python3-numpy +%endif %description ARPACK is a collection of Fortran77 subroutines designed to solve @@ -139,10 +172,17 @@ large scale eigenvalue problems. This package contains the so library links used for building arpack based applications. +%package -n python3-%{name} +Summary: Python bindings for ARPACK +Group: Development/Libraries/Python + +%description -n python3-%{name} +ARPACK is a collection of Fortran77 subroutines designed to solve +large scale eigenvalue problems. This package provides the python +bindings for ARPACK. + %prep -%setup -q -n arpack-ng-%{version} -%patch0 -p1 -%patch1 -p1 +%autosetup -p1 -n arpack-ng-%{version} # create baselibs.conf based on flavor cat > %{_sourcedir}/baselibs.conf <<EOF @@ -161,22 +201,26 @@ export CXXFLAGS="%{optflags} -fPIC" %if %{with mpi} +source %{my_prefix}/bin/mpivars.sh +export CC=%{my_prefix}/bin/mpicc +export CXX=%{my_prefix}/bin/mpic++ export F77=%{my_prefix}/bin/mpif77 export MPIF77=%{my_prefix}/bin/mpif77 export LD_LIBRARY_PATH=%{my_prefix}/%{_lib} %endif -%global orig_prefix %{_prefix} -%define _prefix %{my_prefix} -sh bootstrap -%configure --disable-static \ - %{?with_mpi: --enable-mpi} \ - %{nil} -%define _prefix %{orig_prefix} -make %{?_smp_mflags} +%cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=%{my_prefix} \ + -DCMAKE_INSTALL_LIBDIR:PATH=%{my_libdir} \ + -DCMAKE_SKIP_RPATH:BOOL=OFF \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ + -DCMAKE_CXX_COMPILER_VERSION=$(gcc -dumpfullversion) \ + -DMPI:BOOL=%{?with_mpi:ON}%{!?with_mpi:OFF} \ + -DPYTHON3:BOOL=%{?with_pyarpack:ON}%{!?with_pyarpack:OFF} +%cmake_build %install -%make_install +%cmake_install find %{buildroot} -type f -name "*.la" -delete -print # Remove sequential version files @@ -189,9 +233,9 @@ %check %if %{with mpi} -export PATH="%{my_prefix}/bin/:$PATH" +source %{my_prefix}/bin/mpivars.sh %endif -%make_build check +%ctest %post -n %{libname} -p /sbin/ldconfig %postun -n %{libname} -p /sbin/ldconfig @@ -208,6 +252,14 @@ %if %{without mpi} %dir %{_libdir}/pkgconfig %{_libdir}/pkgconfig/*.pc +%else +%dir %{my_libdir}/cmake +%endif +%{my_libdir}/cmake/arpack-ng/ + +%if %{with pyarpack} +%files -n python3-%{name} +%{python3_sitearch}/*.so %endif %changelog ++++++ _constraints ++++++ <?xml version="1.0" encoding="UTF-8"?> <constraints> <!-- Only for x86_64, aarch64 where pyarpack is built --> <overwrite> <conditions> <arch>x86_64</arch> <arch>aarch64</arch> </conditions> <hardware> <disk> <size unit="G">3</size> </disk> <physicalmemory> <size unit="G">12</size> </physicalmemory> </hardware> </overwrite> </constraints> ++++++ arpack-ng-python-module-installdir.patch ++++++ Index: arpack-ng-3.8.0/CMakeLists.txt =================================================================== --- arpack-ng-3.8.0.orig/CMakeLists.txt +++ arpack-ng-3.8.0/CMakeLists.txt @@ -608,8 +608,8 @@ if(ICB) target_include_directories(pyarpack PUBLIC ${pyarpack_HDR} ${EIGEN3_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) target_link_libraries(pyarpack BLAS::BLAS LAPACK::LAPACK ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) install(TARGETS pyarpack - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/pyarpack - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/pyarpack) + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages) configure_file("${PROJECT_SOURCE_DIR}/EXAMPLES/PYARPACK/pyarpackSparseBiCGDiag.py.in" "${CMAKE_BINARY_DIR}/pyarpackSparseBiCGDiag.py" @ONLY) add_test(NAME pyarpackSparseBiCGDiag_tst COMMAND ${PYTHON_EXECUTABLE} pyarpackSparseBiCGDiag.py) set_tests_properties(pyarpackSparseBiCGDiag_tst PROPERTIES ENVIRONMENT PYTHONPATH=${CMAKE_BINARY_DIR}/lib:$ENV{PYTHONPATH})
participants (1)
-
User for buildservice source handling