diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..945ff53 --- /dev/null +++ b/_multibuild @@ -0,0 +1,4 @@ + + gnu-hpc + serial + diff --git a/baselibs.conf b/baselibs.conf deleted file mode 100644 index 5ac370e..0000000 --- a/baselibs.conf +++ /dev/null @@ -1 +0,0 @@ -libsuperlu5 diff --git a/superlu-5.2-make.patch b/superlu-5.2-make.patch new file mode 100644 index 0000000..73858a8 --- /dev/null +++ b/superlu-5.2-make.patch @@ -0,0 +1,44 @@ +diff -ruN SuperLU_5.2.1.old/make.inc SuperLU_5.2.1/make.inc +--- SuperLU_5.2.1.old/make.inc 2016-05-22 17:08:28.000000000 +0100 ++++ SuperLU_5.2.1/make.inc 2016-09-29 21:04:09.000000000 +0100 +@@ -18,14 +18,14 @@ + # + # The name of the libraries to be created/linked to + # +-SuperLUroot = /home/xiaoye/Dropbox/Codes/SuperLU/SuperLU_5.2.1/build ++SuperLUroot = ../ + SUPERLULIB = $(SuperLUroot)/SRC/libsuperlu.a + + TMGLIB = libtmglib.a + +-# BLASDEF = -DUSE_VENDOR_BLAS +-BLASLIB = /home/xiaoye/Dropbox/Codes/SuperLU/SuperLU_5.2.1/build/CBLAS/libblas.a +-LIBS = $(SUPERLULIB) /home/xiaoye/Dropbox/Codes/SuperLU/SuperLU_5.2.1/build/CBLAS/libblas.a ++BLASDEF = -DUSE_VENDOR_BLAS ++BLASLIB = -lopenblas ++LIBS = $(SUPERLULIB) $(BLASLIB) + + # + # The archiver and the flag(s) to use when building archive (library) +@@ -35,10 +35,11 @@ + ARCHFLAGS = cr + RANLIB = /usr/bin/ranlib + +-CC = /usr/bin/cc +-CFLAGS = -O3 -DNDEBUG -DPRNTlevel=0 -DAdd_ +-NOOPTS = -O0 +-FORTRAN = /usr/bin/gfortran ++#CC = gcc ++CFLAGS = $(RPM_OPT_FLAGS) -fPIC -DPIC ++NOOPTS = $(RPM_OPT_FLAGS) -Os -fPIC -DPIC ++#FORTRAN = gfortran #g77 ++FFLAGS = $(RPM_OPT_FLAGS) -fPIC + + LOADER = $(CC) + LOADOPTS = +@@ -46,4 +47,4 @@ + # + # The directory in which Matlab is installed + # +-MATLAB = /Applications/MATLAB_R2015b.app ++#MATLAB = /Applications/MATLAB_R2015b.app diff --git a/superlu-rpmlintrc b/superlu-rpmlintrc new file mode 100644 index 0000000..f161fd3 --- /dev/null +++ b/superlu-rpmlintrc @@ -0,0 +1,6 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("superlu.* library-without-ldconfig-postin") +addFilter("superlu.* library-without-ldconfig-postun") + diff --git a/superlu.changes b/superlu.changes index 0cfa3f4..08860cd 100644 --- a/superlu.changes +++ b/superlu.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Fri Oct 26 19:55:59 UTC 2018 - eich@suse.com + +- Add environment module support for HPC. + * create baselib.conf on the fly. +- Add superlu-5.2-make.patch: + add compiler and build flags in make.inc. +- Separate off documentation and examples to separate packages. + ------------------------------------------------------------------- Tue Jun 14 12:56:22 UTC 2016 - badshah400@gmail.com diff --git a/superlu.spec b/superlu.spec index 81a12ae..ea90d69 100644 --- a/superlu.spec +++ b/superlu.spec @@ -1,8 +1,7 @@ # # spec file for package superlu # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. -# Copyright (c) 2016 Christoph GrĂ¼ninger foss@grueninger.de +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,20 +14,53 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # +# SuperLU library build that is dependent on compiler toolchain +%global flavor @BUILD_FLAVOR@%{nil} -Name: superlu -Summary: A general purpose library for the direct solution of sparse systems of linear equations +# Base package name +%define pname superlu +%define ver 5.2.1 + +%define _ver %(echo %{ver} | tr . _) + +%if "%flavor" == "" +ExclusiveArch: do_not_build +%endif + +%if "%{flavor}" == "serial" +%bcond_with hpc +%endif + +%if "%{flavor}" == "gnu-hpc" +%bcond_without hpc +%global compiler_family gnu +%undefine c_f_ver +%endif + +%define package_name %pname +%if %{without hpc} +%define p_includedir %_includedir +%define p_libdir %_libdir +%define _sover 5 +%else +%{hpc_init -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} %{?ext:-e %{ext}}} +%define package_name %{hpc_package_name %_ver} +%define p_includedir %hpc_includedir +%define p_libdir %hpc_libdir +%endif + +Name: %{package_name} +Summary: A general purpose library for the direct solution of linear equations License: BSD-3-Clause Group: Development/Libraries/C and C++ -Version: 5.2.1 +Version: %{ver} Release: 0 -%define soname lib%{name}5 -#Source: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_5.2.1.tar.gz -Source: %{name}_%{version}-bsd.tar.gz +Source: http://crd-legacy.lbl.gov/%7Exiaoye/SuperLU/%{pname}_%{version}.tar.gz Source1: superlu_ug.pdf Source2: README.SUSE -Source3: baselibs.conf +# PATCH-FEATURE-OPENSUSE superlu-5.2-make.patch : add compiler and build flags in make.inc +Patch0: superlu-5.2-make.patch # PATCH-FIX-UPSTREAM superlu-4.3-include.patch : avoid implicit declaration warnings Patch1: superlu-4.3-include.patch # PATCH-FIX-UPSTREAM superlu-4.3-dont-opt-away.diff @@ -36,95 +68,170 @@ Patch2: superlu-4.3-dont-opt-away.diff # PATCH-FIX-OPENSUSE superlu-5.2-remove-mc64ad.patch [bnc#796236] # The Harwell Subroutine Library (HSL) routine mc64ad.c have been removed # from the original sources for legal reasons. This patch disables the inclusion of -# this routine in the library which, however, remains fully functionnal +# this routine in the library which, however, remains fully functional Patch3: superlu-5.2-remove-mc64ad.patch -Url: http://crd.lbl.gov/~xiaoye/SuperLU/ -BuildRequires: blas-devel -BuildRequires: cmake >= 2.8.12 -BuildRequires: fdupes -BuildRequires: gcc-fortran +URL: http://crd.lbl.gov/~xiaoye/SuperLU/ BuildRequires: tcsh -BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: fdupes +BuildRequires: cmake >= 2.8.12 +%if %{without hpc} +BuildRequires: blas-devel +BuildRequires: gcc-fortran +%else +Requires: %{compiler_family}%{?c_f_ver}-compilers-hpc +BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel +BuildRequires: libopenblas%{?hpc_ext}-%{compiler_family}%{?c_f_ver}-hpc-devel +BuildRequires: suse-hpc >= 0.3 +%hpc_requires +%hpc_requires_devel +%endif %description SuperLU is an algorithm that uses group theory to optimize LU decomposition of sparse matrices. -%package -n %soname +Docu can be found in the %{name}-doc package or on http://www.netlib.org. + +%package -n lib%{name}%{?_sover} Summary: SuperLU matrix solver Group: System/Libraries -%description -n %soname +%description -n lib%{name}%{?_sover} SuperLU is an algorithm that uses group theory to optimize LU decomposition of sparse matrices. %package devel -Summary: Development files for %{name} +Summary: Headers and development files Group: Development/Libraries/C and C++ -Requires: %soname = %{version} -# The standalone superlu RPM has been eliminated, and the relevant -# files are now in superlu-devel -# The last standalone superlu RPM was was v3.0 -Provides: superlu = %{version} -Obsoletes: superlu <= 3.0 +Requires: lib%{name}%{?_sover} = %version +Recommends: %name-doc %description devel -The %{name}-devel package contains libraries and header files for -developing applications that use %{name}. +SuperLU headers and libraries files needed for development + +%package doc +Summary: Documentation for %name +Group: Documentation/Other + +%description doc +Documentation (HTML/PDF) for SuperLU. +SuperLU is an algorithm that uses group theory to optimize LU +decomposition of sparse matrices. + +%package examples +Summary: Examples for %name +Group: Documentation/Other +Recommends: %name-devel + +%description examples +Example programs for SuperLU. +SuperLU is an algorithm that uses group theory to optimize LU +decomposition of sparse matrices. + +%if %{with hpc} +%{hpc_master_package -l -L} +%{hpc_master_package devel} +%{hpc_master_package doc} +%{hpc_master_package examples} +%endif %prep %setup -q -n SuperLU_%{version} +%patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 -# superlu_ug.pdf in %%doc cp %SOURCE1 %SOURCE2 ./ +# Create baselib.conf dynamically (non-HPC build only). +%if %{without hpc} +cat > %{_sourcedir}/baselibs.conf <