Dominique Leuenberger 2018-06-02 09:50:08 +00:00 committed by Git OBS Bridge
commit ad413391f3
5 changed files with 487 additions and 227 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b9a98de0ddafe7659adffad8a58ca3911c1afa8b509355e7aa58b02feb35d9b6
size 30309650

3
SuiteSparse-5.2.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3c46c035ea8217649958a0f73360e825b0c9dcca4e32a9349d2c7678c0d48813
size 46053054

193
build_csparse_shared.patch Normal file
View File

@ -0,0 +1,193 @@
From: toddrme2178@gmail.com
Date: 2018-03-07
Subject: Build shared CSparse
Upstream does not support installing CSparse as a shared library.
We need it is a shared library. This patch modifies the
makefil to make sure it is installed correctly.
--- a/CSparse/Demo/Makefile
+++ b/CSparse/Demo/Makefile
@@ -1,36 +1,48 @@
-CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
-I = -I../Include
+# CC = cc
+# CF = -O
+
+default: all
+
+include ../../SuiteSparse_config/SuiteSparse_config.mk
LDLIBS += -lm
-CS = $(LDFLAGS) ../Lib/libcsparse.a $(LDLIBS)
-all: lib cs_demo1 cs_demo2 cs_demo3
+I = -I../../include
+
+CS = $(LDFLAGS) -L../../lib -lcsparse $(LDLIBS)
+
+all: library cs_demo1 cs_demo2 cs_demo3 \
+ tests
+
+library:
+ ( cd ../Lib ; $(MAKE) )
+
+tests: library test
+
+test: cs_demo1 cs_demo2 cs_demo3
- ./cs_demo1 < ../Matrix/t1
- ./cs_demo2 < ../Matrix/t1
- - ./cs_demo2 < ../Matrix/ash219
- - ./cs_demo2 < ../Matrix/bcsstk01
- ./cs_demo2 < ../Matrix/fs_183_1
- - ./cs_demo2 < ../Matrix/mbeacxc
- ./cs_demo2 < ../Matrix/west0067
- ./cs_demo2 < ../Matrix/lp_afiro
- - ./cs_demo2 < ../Matrix/bcsstk16
+ - ./cs_demo2 < ../Matrix/ash219
+ - ./cs_demo2 < ../Matrix/mbeacxc
+ - ./cs_demo2 < ../Matrix/bcsstk01
- ./cs_demo3 < ../Matrix/bcsstk01
+ - ./cs_demo2 < ../Matrix/bcsstk16
- ./cs_demo3 < ../Matrix/bcsstk16
-lib:
- ( cd ../Lib ; $(MAKE) )
-
-cs_demo1: lib cs_demo1.c Makefile
+cs_demo1: cs_demo1.c Makefile
$(CC) $(CF) $(I) -o cs_demo1 cs_demo1.c $(CS)
-cs_demo2: lib cs_demo2.c cs_demo.c cs_demo.h Makefile
+cs_demo2: cs_demo2.c cs_demo.c cs_demo.h Makefile
$(CC) $(CF) $(I) -o cs_demo2 cs_demo2.c cs_demo.c $(CS)
-cs_demo3: lib cs_demo3.c cs_demo.c cs_demo.h Makefile
+cs_demo3: cs_demo3.c cs_demo.c cs_demo.h Makefile
$(CC) $(CF) $(I) -o cs_demo3 cs_demo3.c cs_demo.c $(CS)
clean:
- - $(RM) *.o
+ - $(RM) -r $(CLEAN)
purge: distclean
--- a/CSparse/Lib/Makefile
+++ b/CSparse/Lib/Makefile
@@ -15,16 +15,22 @@
# CSparse/Lib. It does not install it for system-wide usage.
LIBRARY = libcsparse
-CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
+VERSION = _
+SO_VERSION = _
-I = -I../Include
-RANLIB = ranlib
-ARCHIVE = $(AR) $(ARFLAGS)
-CP = cp -f
+default: library
-AR_TARGET = $(LIBRARY).a
+include ../../SuiteSparse_config/SuiteSparse_config.mk
-all: install
+LDLIBS += -lm
+
+# compile and install in SuiteSparse/lib
+library:
+ $(MAKE) install INSTALL=$(SUITESPARSE)
+
+I = -I../../SuiteSparse_config -I../Include
+
+all: library
CS = cs_add.o cs_amd.o cs_chol.o cs_cholsol.o cs_counts.o cs_cumsum.o \
cs_droptol.o cs_dropzeros.o cs_dupl.o cs_entry.o \
@@ -39,25 +45,43 @@
$(CS): ../Include/cs.h Makefile
%.o: ../Source/%.c ../Include/cs.h
- $(CC) $(CF) $(I) -c $<
+ $(CC) $(CF) $(I) -c $< -o $@
static: $(AR_TARGET)
$(AR_TARGET): $(CS)
- $(ARCHIVE) $@ $^
+ $(ARCHIVE) $@ $^
- $(RANLIB) $@
-# install CSparse in this directory
-install: $(AR_TARGET)
-
-# uninstall CSparse
-uninstall: purge
-
clean:
- - $(RM) *.o
+ - $(RM) -r $(CLEAN)
purge: distclean
distclean: clean
- - $(RM) *.a *.obj *.dll *.dylib *.so *.so.*
+ - $(RM) -r $(PURGE)
+
+# install CSparse
+install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
+
+$(INSTALL_LIB)/$(SO_TARGET): $(CS)
+ @mkdir -p $(INSTALL_LIB)
+ @mkdir -p $(INSTALL_INCLUDE)
+ @mkdir -p $(INSTALL_DOC)
+ $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+ ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+ ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ $(CP) ../Include/cs.h $(INSTALL_INCLUDE)
+ $(CP) ../README.txt $(INSTALL_DOC)/CSPARSE_README.txt
+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
+ chmod 644 $(INSTALL_INCLUDE)/cs.h
+ chmod 644 $(INSTALL_DOC)/CSPARSE_README.txt
+
+# uninstall CSparse
+uninstall:
+ $(RM) $(INSTALL_LIB)/$(SO_TARGET)
+ $(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+ $(RM) $(INSTALL_LIB)/$(SO_MAIN)
+ $(RM) $(INSTALL_INCLUDE)/cs.h
+ $(RM) $(INSTALL_DOC)/CSPARSE_README.txt
--- a/CSparse/Makefile
+++ b/CSparse/Makefile
@@ -2,6 +2,13 @@
# CSparse Makefile
#------------------------------------------------------------------------------
+SUITESPARSE ?= $(realpath $(CURDIR)/..)
+export SUITESPARSE
+
+default: C
+
+include ../SuiteSparse_config/SuiteSparse_config.mk
+
C:
( cd Lib ; $(MAKE) )
( cd Demo ; $(MAKE) )
@@ -34,9 +41,11 @@
distclean: purge
-install: library
+# install CSparse
+install:
( cd Lib ; $(MAKE) install )
+# uninstall CSparse
uninstall:
( cd Lib ; $(MAKE) uninstall )

View File

@ -1,3 +1,34 @@
-------------------------------------------------------------------
Mon Feb 26 19:58:00 UTC 2018 - toddrme2178@gmail.com
- Update to SuiteSparse 5.2.0
* GraphBLAS 2.0.1: bug fix to GxB_kron
* SuiteSparse_config: corrected back to SO_VERSION 5
* GraphBLAS 2.0.0: with changes to API to conform to the latest
specification. The SO_VERSION of GraphBLAS must change,
as a result, since this affects both the ABI and API interface.
* CHOLMOD 3.1.12: bug fix (no change to the CHOLMOD ABI or API)
* KLU 1.3.9: minor edit, not a bug fix, but code is more clear now
- Update to SuiteSparse 5.1.2
* improved build process for GraphBLAS
* minor change to CSparse/Lib/Makefile, no change in CSparse version
- Update to SuiteSparse 5.1.1
* GraphBLAS added to top-level SuiteSparse/Makefile
* GraphBLAS 1.1.1: bug fix to *assign, split AxB for faster compile,
added memory usage statistics, AxB performance improvment
* minor update to [AMD CAMD KLU]/Doc/Makefile's, no change to
version numbers of AMD, CAMD, or KLU
- Update to SuiteSparse 5.1.0
* GraphBLAS 1.1.0
* minor update to SPQR Makefile (version remains unchanged;
no change to source)
- Update to SuiteSparse 5.0.0
* added GraphBLAS Version 1.0.0
* replaced UFget with ssget
- Use build-in build system instead of manually building everything
- Simplify spec file
- Add build_csparse_shared.patch to build CSparse as a shared library
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Feb 14 10:36:16 UTC 2018 - schwab@suse.de Wed Feb 14 10:36:16 UTC 2018 - schwab@suse.de

View File

@ -26,65 +26,64 @@ Name: suitesparse
Summary: A collection of sparse matrix libraries Summary: A collection of sparse matrix libraries
License: GPL-2.0+ and LGPL-2.1+ License: GPL-2.0+ and LGPL-2.1+
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Version: 4.5.5 Version: 5.2.0
Release: 0 Release: 0
Url: http://faculty.cse.tamu.edu/davis/SuiteSparse/ Url: http://faculty.cse.tamu.edu/davis/SuiteSparse/
Source: http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-%{version}.tar.gz Source: http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-%{version}.tar.gz
Source2: %{name}-rpmlintrc Source2: %{name}-rpmlintrc
# PATCH-FIX-OPENSUSE build_csparse_shared.patch -- Build CSparse as a shared library
Patch1: build_csparse_shared.patch
Patch775418: bnc775418-enable-SuiteSparse_time-symbol.patch Patch775418: bnc775418-enable-SuiteSparse_time-symbol.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?sle_version} == 120300 && 0%{?is_opensuse}
BuildRequires: gcc-c++ BuildRequires: gcc7
BuildRequires: gcc7-c++
%else
BuildRequires: gcc >= 4.9
BuildRequires: gcc-c++ >= 4.9
%endif
BuildRequires: chrpath
BuildRequires: cmake
BuildRequires: gcc-fortran BuildRequires: gcc-fortran
BuildRequires: lapack-devel BuildRequires: lapack-devel
BuildRequires: metis-devel BuildRequires: metis-devel
BuildRequires: tbb-devel
%if %{with openblas} %if %{with openblas}
BuildRequires: openblas-devel BuildRequires: openblas-devel
%endif %endif
BuildRequires: openmpi-devel BuildRequires: openmpi-devel
%define amdver 2.4.6 %define amdver 2.4.6
%define amdso 2_4_6
%define btfver 1.2.6 %define btfver 1.2.6
%define btfso 1_2_6
%define camdver 2.4.6 %define camdver 2.4.6
%define camdso 2_4_6
%define ccolamdver 2.9.6 %define ccolamdver 2.9.6
%define ccolamdso 2_9_6 %define cholmodver 3.0.12
%define colamdver 2.9.6 %define colamdver 2.9.6
%define colamdso 2_9_6 %define csparsever 3.2.0
%define cholmodver 3.0.11 %define cxsparsever 3.2.0
%define cholmodso 3_0_11 %define graphblasver 2.0.1
%define csparsever 3.1.9 %define kluver 1.3.9
%define csparseso 3_1_9
%define cxsparsever 3.1.9
%define cxsparseso 3_1_9
%define kluver 1.3.8
%define kluso 1_3_8
%define ldlver 2.2.6 %define ldlver 2.2.6
%define ldlso 2_2_6
%define rbiover 2.2.6 %define rbiover 2.2.6
%define rbioso 2_2_6
%define spqrver 2.0.8 %define spqrver 2.0.8
%define spqrso 2_0_8
%define umfpackver 5.7.6 %define umfpackver 5.7.6
%define umfpackso 5_7_6
# Your need define even it's just the same as main package # Your need define even it's just the same as main package
# or the %%build loop will override %%version with umfpack's version. # or the %%build loop will override %%version with umfpack's version.
%define configver 4.5.5 %define configver 5.2.0
%define configso 4_5_5 %define csparsemajor %(echo "%{csparsever}" | cut -d "." -f1)
%define amdlib libamd-%{amdso} %define amdlib %(echo "libamd%{amdver}" | cut -d "." -f1)
%define btflib libbtf-%{btfso} %define btflib %(echo "libbtf%{btfver}" | cut -d "." -f1)
%define camdlib libcamd-%{camdso} %define camdlib %(echo "libcamd%{camdver}" | cut -d "." -f1)
%define ccolamdlib libccolamd-%{ccolamdso} %define ccolamdlib %(echo "libccolamd%{ccolamdver}" | cut -d "." -f1)
%define cholmodlib libcholmod-%{cholmodso} %define cholmodlib %(echo "libcholmod%{cholmodver}" | cut -d "." -f1)
%define colamdlib libcolamd-%{colamdso} %define colamdlib %(echo "libcolamd%{colamdver}" | cut -d "." -f1)
%define csparselib libcsparse-%{csparseso} %define csparselib %(echo "libcsparse%{csparsever}" | cut -d "." -f1)
%define cxsparselib libcxsparse-%{cxsparseso} %define cxsparselib %(echo "libcxsparse%{cxsparsever}" | cut -d "." -f1)
%define klulib libklu-%{kluso} %define graphblaslib %(echo "libgraphblas%{graphblasver}" | cut -d "." -f1)
%define ldllib libldl-%{ldlso} %define klulib %(echo "libklu%{kluver}" | cut -d "." -f1)
%define rbiolib librbio-%{rbioso} %define ldllib %(echo "libldl%{ldlver}" | cut -d "." -f1)
%define spqrlib libspqr-%{spqrso} %define rbiolib %(echo "librbio%{rbiover}" | cut -d "." -f1)
%define umfpacklib libumfpack-%{umfpackso} %define spqrlib %(echo "libspqr%{spqrver}" | cut -d "." -f1)
%define configlib libsuitesparseconfig-%{configso} %define umfpacklib %(echo "libumfpack%{umfpackver}" | cut -d "." -f1)
%define configlib %(echo "libsuitesparseconfig%{configver}" | cut -d "." -f1)
%description %description
suitesparse is a collection of libraries for computations involving sparse suitesparse is a collection of libraries for computations involving sparse
@ -94,6 +93,7 @@ matrices.
Summary: Development headers for SuiteSparse Summary: Development headers for SuiteSparse
License: GPL-2.0+ and LGPL-2.1+ License: GPL-2.0+ and LGPL-2.1+
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: gcc-c++ >= 4.9
Requires: %{amdlib} = %{amdver} Requires: %{amdlib} = %{amdver}
Requires: %{btflib} = %{btfver} Requires: %{btflib} = %{btfver}
Requires: %{camdlib} = %{camdver} Requires: %{camdlib} = %{camdver}
@ -104,6 +104,7 @@ Requires: %{configlib} = %{configver}
Requires: %{configlib} = %{version} Requires: %{configlib} = %{version}
Requires: %{csparselib} = %{csparsever} Requires: %{csparselib} = %{csparsever}
Requires: %{cxsparselib} = %{cxsparsever} Requires: %{cxsparselib} = %{cxsparsever}
Requires: %{graphblaslib} = %{graphblasver}
Requires: %{klulib} = %{kluver} Requires: %{klulib} = %{kluver}
Requires: %{ldllib} = %{ldlver} Requires: %{ldllib} = %{ldlver}
Requires: %{rbiolib} = %{rbiover} Requires: %{rbiolib} = %{rbiover}
@ -116,13 +117,14 @@ Requires: openblas-devel
Requires: lapack-devel Requires: lapack-devel
%endif %endif
Requires: openmpi-devel Requires: openmpi-devel
Requires: tbb-devel
# make sure developers can find these packages # make sure developers can find these packages
Provides: suitesparse-common-devel = %{version}
Obsoletes: suitesparse-common-devel < %{version}
Provides: SuiteSparse_config = %{version} Provides: SuiteSparse_config = %{version}
Obsoletes: SuiteSparse_config < %{version} Obsoletes: SuiteSparse_config < %{version}
Provides: amd-devel = %{amdver} Provides: amd-devel = %{amdver}
Obsoletes: amd-devel < %{amdver} Obsoletes: amd-devel < %{amdver}
Provides: suitesparse-common-devel = %{version}
Obsoletes: suitesparse-common-devel < %{version}
Provides: umfpack-devel = %{umfpackver} Provides: umfpack-devel = %{umfpackver}
Obsoletes: umfpack-devel < %{umfpackver} Obsoletes: umfpack-devel < %{umfpackver}
Provides: libamd-devel = %{amdver} Provides: libamd-devel = %{amdver}
@ -141,6 +143,8 @@ Provides: libcsparse-devel = %{csparsever}
Obsoletes: libcsparse-devel < %{csparsever} Obsoletes: libcsparse-devel < %{csparsever}
Provides: libcxsparse-devel = %{cxsparsever} Provides: libcxsparse-devel = %{cxsparsever}
Obsoletes: libcxsparse-devel < %{cxsparsever} Obsoletes: libcxsparse-devel < %{cxsparsever}
Provides: libgraphblas-devel = %{umfpackver}
Obsoletes: libgraphblas-devel < %{umfpackver}
Provides: libklu-devel = %{kluver} Provides: libklu-devel = %{kluver}
Obsoletes: libklu-devel < %{kluver} Obsoletes: libklu-devel < %{kluver}
Provides: libldl-devel = %{ldlver} Provides: libldl-devel = %{ldlver}
@ -179,6 +183,8 @@ Release: 0
Summary: Symmetric Approximate Minimum Degree Summary: Symmetric Approximate Minimum Degree
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libamd-%{amdver}" | tr . _) = %{version}
Obsoletes: %(echo "libamd-%{amdver}" | tr . _) < %{version}
%description -n %{amdlib} %description -n %{amdlib}
AMD is a set of routines for ordering a sparse matrix prior to AMD is a set of routines for ordering a sparse matrix prior to
@ -196,6 +202,8 @@ Release: 0
Summary: Permutation to Block Triangular Form Summary: Permutation to Block Triangular Form
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libbtf-%{btfver}" | tr . _) = %{version}
Obsoletes: %(echo "libbtf-%{btfver}" | tr . _) < %{version}
%description -n %{btflib} %description -n %{btflib}
BTF permutes an unsymmetric matrix (square or rectangular) into its BTF permutes an unsymmetric matrix (square or rectangular) into its
@ -210,6 +218,8 @@ Release: 0
Summary: Symmetric Approximate Minimum Degree Summary: Symmetric Approximate Minimum Degree
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libcamd-%{camdver}" | tr . _) = %{version}
Obsoletes: %(echo "libcamd-%{camdver}" | tr . _) < %{version}
%description -n %{camdlib} %description -n %{camdlib}
CAMD is a set of routines for ordering a sparse matrix prior to CAMD is a set of routines for ordering a sparse matrix prior to
@ -225,6 +235,8 @@ Release: 0
Summary: Constrained Column Approximate Minimum Degree Summary: Constrained Column Approximate Minimum Degree
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libccolamd-%{ccolamdver}" | tr . _) = %{version}
Obsoletes: %(echo "libccolamd-%{ccolamdver}" | tr . _) < %{version}
%description -n %{ccolamdlib} %description -n %{ccolamdlib}
CCOLAMD computes an column approximate minimum degree ordering CCOLAMD computes an column approximate minimum degree ordering
@ -239,6 +251,8 @@ Release: 0
Summary: Supernodal Sparse Cholesky Factorization and Update/Downdate Summary: Supernodal Sparse Cholesky Factorization and Update/Downdate
License: GPL-2.0 and LGPL-2.1 License: GPL-2.0 and LGPL-2.1
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libcholmod-%{cholmodver}" | tr . _) = %{version}
Obsoletes: %(echo "libcholmod-%{cholmodver}" | tr . _) < %{version}
#bnc746867 cholmod from suitesparse should be GPL-2.0 and/or LGPL-2.0 licensed #bnc746867 cholmod from suitesparse should be GPL-2.0 and/or LGPL-2.0 licensed
%description -n %{cholmodlib} %description -n %{cholmodlib}
@ -266,6 +280,8 @@ Release: 0
Summary: Column Approximate Minimum Degree Summary: Column Approximate Minimum Degree
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libcolamd-%{colamdver}" | tr . _) = %{version}
Obsoletes: %(echo "libcolamd-%{colamdver}" | tr . _) < %{version}
%description -n %{colamdlib} %description -n %{colamdlib}
The COLAMD column approximate minimum degree ordering algorithm The COLAMD column approximate minimum degree ordering algorithm
@ -287,6 +303,8 @@ Release: 0
Summary: Instructional Sparse Matrix Package Summary: Instructional Sparse Matrix Package
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libcsparse-%{csparsever}" | tr . _) = %{version}
Obsoletes: %(echo "libcsparse-%{csparsever}" | tr . _) < %{version}
# AT version 3.1.9, this package was accidentally called libcsparsever-3_1_9 # AT version 3.1.9, this package was accidentally called libcsparsever-3_1_9
%if "%{csparsever}" == "3.1.9" %if "%{csparsever}" == "3.1.9"
Obsoletes: libcsparsever-3_1_9 = 3.1.9 Obsoletes: libcsparsever-3_1_9 = 3.1.9
@ -317,6 +335,8 @@ Release: 0
Summary: An extended version of CSparse Summary: An extended version of CSparse
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libcxsparse-%{cxsparsever}" | tr . _) = %{version}
Obsoletes: %(echo "libcxsparse-%{cxsparsever}" | tr . _) < %{version}
%description -n %{cxsparselib} %description -n %{cxsparselib}
CXSparse is an extended version of CSparse, with support for double CXSparse is an extended version of CSparse, with support for double
@ -324,12 +344,34 @@ or complex matrices, with int or long integers.
CXSparse is part of the SuiteSparse sparse matrix suite. CXSparse is part of the SuiteSparse sparse matrix suite.
%package -n %{graphblaslib}
Version: %{graphblasver}
Release: 0
Summary: An implementation of the GraphBLAS standard
License: Apache-2.0
Group: System/Libraries
Provides: %(echo "libgraphblas-%{graphblasver}" | tr . _) = %{version}
Obsoletes: %(echo "libgraphblas-%{graphblasver}" | tr . _) < %{version}
%description -n %{graphblaslib}
GraphBLAS is an full implementation of the GraphBLAS standard,
which defines a set of sparse matrix operations on an extended algebra of
semirings using an almost unlimited variety of operators and types. When
applied to sparse adjacency matrices, these algebraic operations are equivalent
to computations on graphs. GraphBLAS provides a powerful and expressive
framework for creating graph algorithms based on the elegant mathematics of
sparse matrix operations on a semiring.
GraphBLAS is part of the SuiteSparse sparse matrix suite.
%package -n %{klulib} %package -n %{klulib}
Version: %{kluver} Version: %{kluver}
Release: 0 Release: 0
Summary: Sparse LU Factorization, for Circuit Simulation Summary: Sparse LU Factorization, for Circuit Simulation
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libklu-%{kluver}" | tr . _) = %{version}
Obsoletes: %(echo "libklu-%{kluver}" | tr . _) < %{version}
%description -n %{klulib} %description -n %{klulib}
KLU is a sparse LU factorization algorithm well-suited for use in KLU is a sparse LU factorization algorithm well-suited for use in
@ -345,6 +387,8 @@ Release: 0
Summary: A Simple LDL^T Factorization Summary: A Simple LDL^T Factorization
License: LGPL-2.1+ License: LGPL-2.1+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libldl-%{ldlver}" | tr . _) = %{version}
Obsoletes: %(echo "libldl-%{ldlver}" | tr . _) < %{version}
%description -n %{ldllib} %description -n %{ldllib}
LDL is a set of concise routines for factorizing symmetric positive- LDL is a set of concise routines for factorizing symmetric positive-
@ -365,6 +409,8 @@ Release: 0
Summary: MATLAB Toolbox for Reading/Writing Sparse Matrices Summary: MATLAB Toolbox for Reading/Writing Sparse Matrices
License: GPL-2.0+ License: GPL-2.0+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "librbio-%{rbiover}" | tr . _) = %{version}
Obsoletes: %(echo "librbio-%{rbiover}" | tr . _) < %{version}
%description -n %{rbiolib} %description -n %{rbiolib}
RBio is a MATLAB toolbox for reading/writing sparse matrices in the RBio is a MATLAB toolbox for reading/writing sparse matrices in the
@ -380,6 +426,8 @@ Release: 0
Summary: Multifrontal Sparse QR Summary: Multifrontal Sparse QR
License: GPL-2.0+ License: GPL-2.0+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libspqr-%{spqrver}" | tr . _) = %{version}
Obsoletes: %(echo "libspqr-%{spqrver}" | tr . _) < %{version}
%description -n %{spqrlib} %description -n %{spqrlib}
SuiteSparseQR is an implementation of the multifrontal sparse QR SuiteSparseQR is an implementation of the multifrontal sparse QR
@ -398,6 +446,8 @@ Release: 0
Summary: Sparse Multifrontal LU Factorization Summary: Sparse Multifrontal LU Factorization
License: GPL-2.0+ License: GPL-2.0+
Group: System/Libraries Group: System/Libraries
Provides: %(echo "libumfpack-%{umfpackver}" | tr . _) = %{version}
Obsoletes: %(echo "libumfpack-%{umfpackver}" | tr . _) < %{version}
%description -n %{umfpacklib} %description -n %{umfpacklib}
UMFPACK is a set of routines for solving unsymmetric sparse linear UMFPACK is a set of routines for solving unsymmetric sparse linear
@ -420,6 +470,8 @@ Provides: libufconfig = %{configver}
Obsoletes: libufconfig < %{configver} Obsoletes: libufconfig < %{configver}
Provides: libUFconfig = %{configver} Provides: libUFconfig = %{configver}
Obsoletes: libUFconfig < %{configver} Obsoletes: libUFconfig < %{configver}
Provides: %(echo "libsuitesparseconfig%{configver}" | tr . _) = %{version}
Obsoletes: %(echo "libsuitesparseconfig%{configver}" | tr . _) < %{version}
%description -n %{configlib} %description -n %{configlib}
SuiteSparse_config is required by a number of sparse matrix packages, SuiteSparse_config is required by a number of sparse matrix packages,
@ -438,107 +490,63 @@ SuiteSparse_config is part of the SuiteSparse sparse matrix suite.
%prep %prep
%setup -q -n SuiteSparse %setup -q -n SuiteSparse
%patch1 -p1
sed 's/^CHOLMOD_CONFIG =.*/CHOLMOD_CONFIG = -DNPARTITION/' -i SuiteSparse_config/SuiteSparse_config.mk sed 's/^CHOLMOD_CONFIG =.*/CHOLMOD_CONFIG = -DNPARTITION/' -i SuiteSparse_config/SuiteSparse_config.mk
%if %{without openblas} %if %{without openblas}
sed 's/-lopenblas/-lblas/' -i SuiteSparse_config/SuiteSparse_config.mk sed 's/-lopenblas/-lblas/' -i SuiteSparse_config/SuiteSparse_config.mk
%endif %endif
sed -i "s:^SO_VERSION = _:SO_VERSION = %{csparsemajor}:" CSparse/Lib/Makefile
sed -i "s:^VERSION = _:VERSION = %{csparsever}:" CSparse/Lib/Makefile
cat CSparse/Lib/Makefile
mv SPQR/Doc/README.txt SPQR/Doc/README_2.txt
# bnc#751746 # bnc#751746
rm -rf MATLAB_Tools/Factorize/Doc/factorize_article.pdf rm CHOLMOD/Doc/IA3_2014_Workshop_Rennich_Stosic_Davis_preprint.pdf
rm -rf SPQR/Doc/algo_spqr.pdf rm KLU/Doc/palamadai_e.pdf
rm -rf SPQR/Doc/spqr.pdf rm MATLAB_Tools/Factorize/Doc/factorize_article.pdf
rm SPQR/Doc/algo_spqr.pdf
rm SPQR/Doc/qrgpu_paper.pdf
rm SPQR/Doc/spqr.pdf
# bnc#775418 # bnc#775418
%patch775418 -p1 %patch775418 -p1
%build %build
mkdir -p Lib %if 0%{?sle_version} == 120300 && 0%{?is_opensuse}
export CC=gcc-7
export CXX=g++-7
%endif
#bnc775418 provides SuiteSparse_time symbol in SuiteSparse_config
pushd SuiteSparse_config
make CFLAGS="%{optflags} -fPIC"
pushd ../Lib
gcc -shared -Wl,-soname -Wl,"libsuitesparseconfig-%{configver}.so" -o "libsuitesparseconfig-%{configver}.so" ../SuiteSparse_config/*.o -lm
ln -s "libsuitesparseconfig-%{version}.so" "libsuitesparseconfig.so"
popd
popd
# libraries linking config [bnc#883683]
%if %{with openblas} %if %{with openblas}
blas_lib=-lopenblas blas_lib=-lopenblas
%else %else
blas_lib=-lblas blas_lib=-lblas
%endif %endif
amd_libs="libsuitesparseconfig.so"
camd_libs="libsuitesparseconfig.so"
ccolamd_libs="libsuitesparseconfig.so"
cholmod_libs="libamd.so libcamd.so libcolamd.so libccolamd.so libsuitesparseconfig.so $blas_lib -llapack -lmetis"
colamd_libs="libsuitesparseconfig.so"
klu_libs="libamd.so libbtf.so libcolamd.so"
rbio_libs="libsuitesparseconfig.so"
spqr_libs="libcholmod.so libsuitesparseconfig.so $blas_lib -llapack -lmetis"
umfpack_libs="libamd.so libcholmod.so libsuitesparseconfig.so $blas_lib -llapack -lmetis"
for dir in AMD BTF CAMD CCOLAMD COLAMD CHOLMOD CSparse CXSparse KLU LDL RBio SPQR UMFPACK; do make MY_METIS_LIB="-lmetis" LAPACK="-llapack" BLAS="$blas_lib" TBB="-ltbb" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" go
pushd $dir chrpath -d lib/*.so.*.*
ver=$(grep -E "^VERSION =" Lib/Makefile | sed "s:VERSION = ::") chrpath -d GraphBLAS/build/*.so
if [[ -z $ver ]] ; then chrpath -d GraphBLAS/build/*.so.*.*
major=$(grep -oP "^\#define \w+_VER \d+" Include/*.h | sed -E "s:\#define [A-Z]+_VER ::")
minor=$(grep -oP "^\#define \w+_SUBVER \d+" Include/*.h | sed -E "s:\#define [A-Z]+_SUBVER ::")
patchlev=$(grep -oP "^\#define \w+_SUBSUB \d+" Include/*.h | sed -E "s:\#define [A-Z]+_SUBSUB ::")
ver="$major.$minor.$patchlev"
fi
make CFLAGS="%{optflags} -fPIC"
popd
pushd Lib
dir_l=$(echo "$dir" | tr "[A-Z]" "[a-z]")
linked_libs=${dir_l}_libs
gcc -shared -Wl,-soname -Wl,"lib${dir_l}-$ver.so" -o "lib${dir_l}-$ver.so" ../${dir}/Lib/*.o ${!linked_libs} -lm
ln -s "lib${dir_l}-$ver.so" "lib${dir_l}.so"
popd
done
# specialities
# -- CHOLMOD
pushd CHOLMOD
cp Cholesky/lesser.txt Doc/Cholesky_License.txt
cp Core/lesser.txt Doc/Core_License.txt
cp MatrixOps/gpl.txt Doc/MatrixOps_License.txt
cp Partition/lesser.txt Doc/Partition_License.txt
cp Supernodal/gpl.txt Doc/Supernodal_License.txt
popd
%install %install
mkdir -p %{buildroot}%{_includedir}/%{name} mkdir -p %{buildroot}%{_includedir}/%{name}
mkdir -p %{buildroot}%{_docdir}
mkdir -p %{buildroot}%{_libdir} mkdir -p %{buildroot}%{_libdir}
mkdir -p %{buildroot}%{_docdir}/%{name}
mkdir -p %{buildroot}%{_docdir}/%{name}-devel
cp -a SuiteSparse_config/SuiteSparse_config.h %{buildroot}%{_includedir}/%{name}
cp -a README.txt %{buildroot}%{_docdir}/%{name}
cp -a Lib/*.so* %{buildroot}/%{_libdir}
for dir in AMD BTF CAMD CCOLAMD CHOLMOD COLAMD CSparse CXSparse KLU LDL RBio SPQR UMFPACK; do
pushd $dir
ver=$(grep -E "^VERSION =" Lib/Makefile | sed "s:VERSION = ::")
if [[ -z $ver ]] ; then
major=$(grep -oP "^\#define \w+_VER \d+" Include/*.h | sed -E "s:\#define [A-Z]+_VER ::")
minor=$(grep -oP "^\#define \w+_SUBVER \d+" Include/*.h | sed -E "s:\#define [A-Z]+_SUBVER ::")
patchlev=$(grep -oP "^\#define \w+_SUBSUB \d+" Include/*.h | sed -E "s:\#define [A-Z]+_SUBSUB ::")
ver="$major.$minor.$patchlev"
fi
cp -a Lib/*.a %{buildroot}/%{_libdir}
cp -a Include/*\.h %{buildroot}%{_includedir}/%{name}
if ls Include/*\.hpp 1> /dev/null 2>&1; then
cp -a Include/*\.hpp %{buildroot}%{_includedir}/%{name}
fi
mkdir %{buildroot}%{_docdir}/%{name}/$dir-$ver
mkdir %{buildroot}%{_docdir}/%{name}-devel/$dir
cp -a README.txt Doc/{License,ChangeLog,*.txt} %{buildroot}%{_docdir}/%{name}/$dir-$ver > /dev/null 2>&1 | true
cp -a $dir/Doc/*.pdf %{buildroot}%{_docdir}/%{name}-devel/$dir > /dev/null 2>&1 | true
popd
done
cp -r SuiteSparse_config/*.a %{buildroot}%{_libdir} cp -Pt %{buildroot}%{_libdir} */Lib/*.a
mkdir %{buildroot}%{_docdir}/%{name}/SuiteSparse_config-%{configver}/ cp -Pt %{buildroot}%{_libdir} lib/*
cp -r SuiteSparse_config/README.txt %{buildroot}%{_docdir}/%{name}/SuiteSparse_config-%{configver}/ cp -Pt %{buildroot}%{_libdir} GraphBLAS/build/*.so
cp -Pt %{buildroot}%{_libdir} GraphBLAS/build/*.so.*
cp -Pt %{buildroot}%{_includedir}/%{name} include/*
cp -Pt %{buildroot}%{_includedir}/%{name} GraphBLAS/Include/*.h
cp -Prt %{buildroot}%{_docdir} share/doc/*
%if 0%{?sle_version} > 120300
cp -Pt %{buildroot}%{_libdir} GraphBLAS/build/*.a
%endif
%check %check
amd_test_symbol="amd_postorder" amd_test_symbol="amd_postorder"
@ -571,6 +579,7 @@ for test_library in amd btf camd ccolamd colamd cholmod csparse cxsparse klu ldl
cp linking_test.c.in linking_test.c cp linking_test.c.in linking_test.c
test_symbol=${test_library}_test_symbol test_symbol=${test_library}_test_symbol
sed -i "s|@test_symbol@|${!test_symbol}|" linking_test.c sed -i "s|@test_symbol@|${!test_symbol}|" linking_test.c
cat linking_test.c
gcc -o linking_test linking_test.c -L%{buildroot}%{_libdir} -l${test_library} gcc -o linking_test linking_test.c -L%{buildroot}%{_libdir} -l${test_library}
done done
@ -600,6 +609,9 @@ popd
%post -n %{cxsparselib} -p /sbin/ldconfig %post -n %{cxsparselib} -p /sbin/ldconfig
%postun -n %{cxsparselib} -p /sbin/ldconfig %postun -n %{cxsparselib} -p /sbin/ldconfig
%post -n %{graphblaslib} -p /sbin/ldconfig
%postun -n %{graphblaslib} -p /sbin/ldconfig
%post -n %{klulib} -p /sbin/ldconfig %post -n %{klulib} -p /sbin/ldconfig
%postun -n %{klulib} -p /sbin/ldconfig %postun -n %{klulib} -p /sbin/ldconfig
@ -620,99 +632,123 @@ popd
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)
%{_includedir}/%{name} %doc ChangeLog README.txt
%{_libdir}/lib*.so %license LICENSE.txt
%exclude %{_libdir}/lib*-*.so %{_docdir}/%{name}-%{version}
%{_docdir}/%{name}-devel %{_libdir}/*.so
%dir %{_docdir}/%{name} %{_includedir}/%{name}/
%{_docdir}/%{name}/README.txt
%files devel-static %files devel-static
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/lib*.a %doc ChangeLog README.txt
%license LICENSE.txt
%{_libdir}/*.a
%files -n %{amdlib} %files -n %{amdlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libamd-%{amdver}.so %doc AMD/README.txt
%dir %{_docdir}/%{name} %doc AMD/Doc/AMD_UserGuide.pdf AMD/Doc/ChangeLog
%{_docdir}/%{name}/AMD-%{amdver} %license AMD/Doc/License.txt AMD/Doc/lesser.txt
%{_libdir}/libamd.so.*
%files -n %{btflib} %files -n %{btflib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libbtf-%{btfver}.so %doc BTF/README.txt
%dir %{_docdir}/%{name} %doc BTF/Doc/ChangeLog
%{_docdir}/%{name}/BTF-%{btfver} %license BTF/Doc/License.txt BTF/Doc/lesser.txt
%{_libdir}/libbtf.so.*
%files -n %{camdlib} %files -n %{camdlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libcamd-%{camdver}.so %doc CAMD/README.txt
%dir %{_docdir}/%{name} %doc CAMD/Doc/CAMD_UserGuide.pdf CAMD/Doc/ChangeLog
%{_docdir}/%{name}/CAMD-%{camdver} %license CAMD/Doc/License.txt CAMD/Doc/lesser.txt
%{_libdir}/libcamd.so.*
%files -n %{ccolamdlib} %files -n %{ccolamdlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libccolamd-%{ccolamdver}.so %doc CCOLAMD/README.txt
%dir %{_docdir}/%{name} %doc CCOLAMD/Doc/ChangeLog
%{_docdir}/%{name}/CCOLAMD-%{ccolamdver} %license CCOLAMD/Doc/License.txt CCOLAMD/Doc/lesser.txt
%{_libdir}/libccolamd.so.*
%files -n %{cholmodlib} %files -n %{cholmodlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libcholmod-%{cholmodver}.so %doc CHOLMOD/README.txt
%dir %{_docdir}/%{name} %doc CHOLMOD/Doc/CHOLMOD_UserGuide.pdf
%{_docdir}/%{name}/CHOLMOD-%{cholmodver} %license CHOLMOD/Doc/ChangeLog CHOLMOD/Doc/License.txt
%license CHOLMOD/Cholesky/lesser.txt
%license CHOLMOD/MatrixOps/gpl.txt
%{_libdir}/libcholmod.so.*
%files -n %{colamdlib} %files -n %{colamdlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libcolamd-%{colamdver}.so %doc COLAMD/README.txt
%dir %{_docdir}/%{name} %doc COLAMD/Doc/ChangeLog
%{_docdir}/%{name}/COLAMD-%{colamdver} %license COLAMD/Doc/License.txt COLAMD/Doc/lesser.txt
%{_libdir}/libcolamd.so.*
%files -n %{csparselib} %files -n %{csparselib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libcsparse-%{csparsever}.so %doc CSparse/README.txt
%dir %{_docdir}/%{name} %doc CSparse/Doc/ChangeLog
%{_docdir}/%{name}/CSparse-%{csparsever} %license CSparse/Doc/License.txt CSparse/Doc/lesser.txt
%{_libdir}/libcsparse.so.*
%files -n %{cxsparselib} %files -n %{cxsparselib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libcxsparse-%{cxsparsever}.so %doc CXSparse/README.txt
%dir %{_docdir}/%{name} %doc CXSparse/Doc/ChangeLog
%{_docdir}/%{name}/CXSparse-%{cxsparsever} %license CXSparse/Doc/License.txt CXSparse/Doc/lesser.txt
%{_libdir}/libcxsparse.so.*
%files -n %{graphblaslib}
%defattr(-, root, root)
%doc GraphBLAS/README.txt
%doc GraphBLAS/Doc/GraphBLAS_UserGuide.pdf
%license GraphBLAS/Doc/ChangeLog GraphBLAS/Doc/License.txt
%{_libdir}/libgraphblas.so.*
%files -n %{klulib} %files -n %{klulib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libklu-%{kluver}.so %doc KLU/README.txt
%dir %{_docdir}/%{name} %doc KLU/Doc/KLU_UserGuide.pdf KLU/Doc/ChangeLog
%{_docdir}/%{name}/KLU-%{kluver} %license KLU/Doc/License.txt KLU/Doc/lesser.txt
%{_libdir}/libklu.so.*
%files -n %{ldllib} %files -n %{ldllib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libldl-%{ldlver}.so %doc LDL/README.txt
%dir %{_docdir}/%{name} %doc LDL/Doc/ldl_userguide.pdf LDL/Doc/ChangeLog
%{_docdir}/%{name}/LDL-%{ldlver} %license LDL/Doc/License.txt LDL/Doc/lesser.txt
%{_libdir}/libldl.so.*
%files -n %{rbiolib} %files -n %{rbiolib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/librbio-%{rbiover}.so %doc RBio/README.txt
%dir %{_docdir}/%{name} %doc RBio/Doc/ChangeLog
%{_docdir}/%{name}/RBio-%{rbiover} %license RBio/Doc/License.txt RBio/Doc/gpl.txt
%{_libdir}/librbio.so.*
%files -n %{spqrlib} %files -n %{spqrlib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libspqr-%{spqrver}.so %doc SPQR/README.txt
%dir %{_docdir}/%{name} %doc SPQR/Doc/spqr_user_guide.pdf SPQR/Doc/ChangeLog SPQR/Doc/README_2.txt
%{_docdir}/%{name}/SPQR-%{spqrver} %license SPQR/Doc/License.txt SPQR/Doc/gpl.txt
%{_libdir}/libspqr.so.*
%files -n %{umfpacklib} %files -n %{umfpacklib}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libumfpack-%{umfpackver}.so %doc UMFPACK/README.txt
%dir %{_docdir}/%{name} %doc UMFPACK/Doc/UMFPACK_QuickStart.pdf UMFPACK/Doc/UMFPACK_UserGuide.pdf UMFPACK/Doc/ChangeLog
%{_docdir}/%{name}/UMFPACK-%{umfpackver} %license UMFPACK/Doc/License.txt UMFPACK/Doc/gpl.txt
%{_libdir}/libumfpack.so.*
%files -n %{configlib} %files -n %{configlib}
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libsuitesparseconfig-%{configver}.so %doc share/doc/*/SUITESPARSECONFIG_README.txt
%dir %{_docdir}/%{name} %license LICENSE.txt
%{_docdir}/%{name}/SuiteSparse_config-%{configver} %{_libdir}/libsuitesparseconfig.so.*
%changelog %changelog