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

View File

@ -26,65 +26,64 @@ Name: suitesparse
Summary: A collection of sparse matrix libraries
License: GPL-2.0+ and LGPL-2.1+
Group: Development/Libraries/C and C++
Version: 4.5.5
Version: 5.2.0
Release: 0
Url: http://faculty.cse.tamu.edu/davis/SuiteSparse/
Source: http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-%{version}.tar.gz
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
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gcc-c++
%if 0%{?sle_version} == 120300 && 0%{?is_opensuse}
BuildRequires: gcc7
BuildRequires: gcc7-c++
%else
BuildRequires: gcc >= 4.9
BuildRequires: gcc-c++ >= 4.9
%endif
BuildRequires: chrpath
BuildRequires: cmake
BuildRequires: gcc-fortran
BuildRequires: lapack-devel
BuildRequires: metis-devel
BuildRequires: tbb-devel
%if %{with openblas}
BuildRequires: openblas-devel
%endif
BuildRequires: openmpi-devel
%define amdver 2.4.6
%define amdso 2_4_6
%define btfver 1.2.6
%define btfso 1_2_6
%define camdver 2.4.6
%define camdso 2_4_6
%define ccolamdver 2.9.6
%define ccolamdso 2_9_6
%define colamdver 2.9.6
%define colamdso 2_9_6
%define cholmodver 3.0.11
%define cholmodso 3_0_11
%define csparsever 3.1.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 ldlso 2_2_6
%define rbiover 2.2.6
%define rbioso 2_2_6
%define spqrver 2.0.8
%define spqrso 2_0_8
%define umfpackver 5.7.6
%define umfpackso 5_7_6
%define amdver 2.4.6
%define btfver 1.2.6
%define camdver 2.4.6
%define ccolamdver 2.9.6
%define cholmodver 3.0.12
%define colamdver 2.9.6
%define csparsever 3.2.0
%define cxsparsever 3.2.0
%define graphblasver 2.0.1
%define kluver 1.3.9
%define ldlver 2.2.6
%define rbiover 2.2.6
%define spqrver 2.0.8
%define umfpackver 5.7.6
# Your need define even it's just the same as main package
# or the %%build loop will override %%version with umfpack's version.
%define configver 4.5.5
%define configso 4_5_5
%define amdlib libamd-%{amdso}
%define btflib libbtf-%{btfso}
%define camdlib libcamd-%{camdso}
%define ccolamdlib libccolamd-%{ccolamdso}
%define cholmodlib libcholmod-%{cholmodso}
%define colamdlib libcolamd-%{colamdso}
%define csparselib libcsparse-%{csparseso}
%define cxsparselib libcxsparse-%{cxsparseso}
%define klulib libklu-%{kluso}
%define ldllib libldl-%{ldlso}
%define rbiolib librbio-%{rbioso}
%define spqrlib libspqr-%{spqrso}
%define umfpacklib libumfpack-%{umfpackso}
%define configlib libsuitesparseconfig-%{configso}
%define configver 5.2.0
%define csparsemajor %(echo "%{csparsever}" | cut -d "." -f1)
%define amdlib %(echo "libamd%{amdver}" | cut -d "." -f1)
%define btflib %(echo "libbtf%{btfver}" | cut -d "." -f1)
%define camdlib %(echo "libcamd%{camdver}" | cut -d "." -f1)
%define ccolamdlib %(echo "libccolamd%{ccolamdver}" | cut -d "." -f1)
%define cholmodlib %(echo "libcholmod%{cholmodver}" | cut -d "." -f1)
%define colamdlib %(echo "libcolamd%{colamdver}" | cut -d "." -f1)
%define csparselib %(echo "libcsparse%{csparsever}" | cut -d "." -f1)
%define cxsparselib %(echo "libcxsparse%{cxsparsever}" | cut -d "." -f1)
%define graphblaslib %(echo "libgraphblas%{graphblasver}" | cut -d "." -f1)
%define klulib %(echo "libklu%{kluver}" | cut -d "." -f1)
%define ldllib %(echo "libldl%{ldlver}" | cut -d "." -f1)
%define rbiolib %(echo "librbio%{rbiover}" | cut -d "." -f1)
%define spqrlib %(echo "libspqr%{spqrver}" | cut -d "." -f1)
%define umfpacklib %(echo "libumfpack%{umfpackver}" | cut -d "." -f1)
%define configlib %(echo "libsuitesparseconfig%{configver}" | cut -d "." -f1)
%description
suitesparse is a collection of libraries for computations involving sparse
@ -94,21 +93,23 @@ matrices.
Summary: Development headers for SuiteSparse
License: GPL-2.0+ and LGPL-2.1+
Group: Development/Libraries/C and C++
Requires: %{amdlib} = %{amdver}
Requires: %{btflib} = %{btfver}
Requires: %{camdlib} = %{camdver}
Requires: %{ccolamdlib} = %{ccolamdver}
Requires: %{cholmodlib} = %{cholmodver}
Requires: %{colamdlib} = %{colamdver}
Requires: %{configlib} = %{configver}
Requires: %{configlib} = %{version}
Requires: %{csparselib} = %{csparsever}
Requires: %{cxsparselib} = %{cxsparsever}
Requires: %{klulib} = %{kluver}
Requires: %{ldllib} = %{ldlver}
Requires: %{rbiolib} = %{rbiover}
Requires: %{spqrlib} = %{spqrver}
Requires: %{umfpacklib} = %{umfpackver}
Requires: gcc-c++ >= 4.9
Requires: %{amdlib} = %{amdver}
Requires: %{btflib} = %{btfver}
Requires: %{camdlib} = %{camdver}
Requires: %{ccolamdlib} = %{ccolamdver}
Requires: %{cholmodlib} = %{cholmodver}
Requires: %{colamdlib} = %{colamdver}
Requires: %{configlib} = %{configver}
Requires: %{configlib} = %{version}
Requires: %{csparselib} = %{csparsever}
Requires: %{cxsparselib} = %{cxsparsever}
Requires: %{graphblaslib} = %{graphblasver}
Requires: %{klulib} = %{kluver}
Requires: %{ldllib} = %{ldlver}
Requires: %{rbiolib} = %{rbiover}
Requires: %{spqrlib} = %{spqrver}
Requires: %{umfpacklib} = %{umfpackver}
Requires: metis-devel
%if %{with openblas}
Requires: openblas-devel
@ -116,45 +117,48 @@ Requires: openblas-devel
Requires: lapack-devel
%endif
Requires: openmpi-devel
Requires: tbb-devel
# make sure developers can find these packages
Provides: suitesparse-common-devel = %{version}
Obsoletes: suitesparse-common-devel < %{version}
Provides: SuiteSparse_config = %{version}
Obsoletes: SuiteSparse_config < %{version}
Provides: amd-devel = %{amdver}
Obsoletes: amd-devel < %{amdver}
Provides: umfpack-devel = %{umfpackver}
Obsoletes: umfpack-devel < %{umfpackver}
Provides: libamd-devel = %{amdver}
Obsoletes: libamd-devel < %{amdver}
Provides: libbtf-devel = %{btfver}
Obsoletes: libbtf-devel < %{btfver}
Provides: libcamd-devel = %{camdver}
Obsoletes: libcamd-devel < %{camdver}
Provides: libccolamd-devel = %{ccolamdver}
Obsoletes: libccolamd-devel < %{ccolamdver}
Provides: libcholmod-devel = %{cholmodver}
Obsoletes: libcholmod-devel < %{cholmodver}
Provides: libcolamd-devel = %{colamdver}
Obsoletes: libcolamd-devel < %{colamdver}
Provides: libcsparse-devel = %{csparsever}
Obsoletes: libcsparse-devel < %{csparsever}
Provides: libcxsparse-devel = %{cxsparsever}
Obsoletes: libcxsparse-devel < %{cxsparsever}
Provides: libklu-devel = %{kluver}
Obsoletes: libklu-devel < %{kluver}
Provides: libldl-devel = %{ldlver}
Obsoletes: libldl-devel < %{ldlver}
Provides: librbio-devel = %{rbiover}
Obsoletes: librbio-devel < %{rbiover}
Provides: libspqr-devel = %{spqrver}
Obsoletes: libspqr-devel < %{spqrver}
Provides: libumfpack-devel = %{umfpackver}
Obsoletes: libumfpack-devel < %{umfpackver}
Provides: SuiteSparse_config = %{version}
Obsoletes: SuiteSparse_config < %{version}
Provides: amd-devel = %{amdver}
Obsoletes: amd-devel < %{amdver}
Provides: suitesparse-common-devel = %{version}
Obsoletes: suitesparse-common-devel < %{version}
Provides: umfpack-devel = %{umfpackver}
Obsoletes: umfpack-devel < %{umfpackver}
Provides: libamd-devel = %{amdver}
Obsoletes: libamd-devel < %{amdver}
Provides: libbtf-devel = %{btfver}
Obsoletes: libbtf-devel < %{btfver}
Provides: libcamd-devel = %{camdver}
Obsoletes: libcamd-devel < %{camdver}
Provides: libccolamd-devel = %{ccolamdver}
Obsoletes: libccolamd-devel < %{ccolamdver}
Provides: libcholmod-devel = %{cholmodver}
Obsoletes: libcholmod-devel < %{cholmodver}
Provides: libcolamd-devel = %{colamdver}
Obsoletes: libcolamd-devel < %{colamdver}
Provides: libcsparse-devel = %{csparsever}
Obsoletes: libcsparse-devel < %{csparsever}
Provides: libcxsparse-devel = %{cxsparsever}
Obsoletes: libcxsparse-devel < %{cxsparsever}
Provides: libgraphblas-devel = %{umfpackver}
Obsoletes: libgraphblas-devel < %{umfpackver}
Provides: libklu-devel = %{kluver}
Obsoletes: libklu-devel < %{kluver}
Provides: libldl-devel = %{ldlver}
Obsoletes: libldl-devel < %{ldlver}
Provides: librbio-devel = %{rbiover}
Obsoletes: librbio-devel < %{rbiover}
Provides: libspqr-devel = %{spqrver}
Obsoletes: libspqr-devel < %{spqrver}
Provides: libumfpack-devel = %{umfpackver}
Obsoletes: libumfpack-devel < %{umfpackver}
Provides: libsuitesparseconfig-devel = %{configver}
Obsoletes: libsuitesparseconfig-devel < %{configver}
Provides: UFconfig-devel = %{configver}
Obsoletes: UFconfig-devel < %{configver}
Provides: UFconfig-devel = %{configver}
Obsoletes: UFconfig-devel < %{configver}
%description devel
suitesparse is a collection of libraries for computations involving
@ -179,6 +183,8 @@ Release: 0
Summary: Symmetric Approximate Minimum Degree
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libamd-%{amdver}" | tr . _) = %{version}
Obsoletes: %(echo "libamd-%{amdver}" | tr . _) < %{version}
%description -n %{amdlib}
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
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libbtf-%{btfver}" | tr . _) = %{version}
Obsoletes: %(echo "libbtf-%{btfver}" | tr . _) < %{version}
%description -n %{btflib}
BTF permutes an unsymmetric matrix (square or rectangular) into its
@ -210,6 +218,8 @@ Release: 0
Summary: Symmetric Approximate Minimum Degree
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libcamd-%{camdver}" | tr . _) = %{version}
Obsoletes: %(echo "libcamd-%{camdver}" | tr . _) < %{version}
%description -n %{camdlib}
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
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libccolamd-%{ccolamdver}" | tr . _) = %{version}
Obsoletes: %(echo "libccolamd-%{ccolamdver}" | tr . _) < %{version}
%description -n %{ccolamdlib}
CCOLAMD computes an column approximate minimum degree ordering
@ -239,6 +251,8 @@ Release: 0
Summary: Supernodal Sparse Cholesky Factorization and Update/Downdate
License: GPL-2.0 and LGPL-2.1
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
%description -n %{cholmodlib}
@ -266,6 +280,8 @@ Release: 0
Summary: Column Approximate Minimum Degree
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libcolamd-%{colamdver}" | tr . _) = %{version}
Obsoletes: %(echo "libcolamd-%{colamdver}" | tr . _) < %{version}
%description -n %{colamdlib}
The COLAMD column approximate minimum degree ordering algorithm
@ -287,6 +303,8 @@ Release: 0
Summary: Instructional Sparse Matrix Package
License: LGPL-2.1+
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
%if "%{csparsever}" == "3.1.9"
Obsoletes: libcsparsever-3_1_9 = 3.1.9
@ -317,6 +335,8 @@ Release: 0
Summary: An extended version of CSparse
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libcxsparse-%{cxsparsever}" | tr . _) = %{version}
Obsoletes: %(echo "libcxsparse-%{cxsparsever}" | tr . _) < %{version}
%description -n %{cxsparselib}
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.
%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}
Version: %{kluver}
Release: 0
Summary: Sparse LU Factorization, for Circuit Simulation
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libklu-%{kluver}" | tr . _) = %{version}
Obsoletes: %(echo "libklu-%{kluver}" | tr . _) < %{version}
%description -n %{klulib}
KLU is a sparse LU factorization algorithm well-suited for use in
@ -345,6 +387,8 @@ Release: 0
Summary: A Simple LDL^T Factorization
License: LGPL-2.1+
Group: System/Libraries
Provides: %(echo "libldl-%{ldlver}" | tr . _) = %{version}
Obsoletes: %(echo "libldl-%{ldlver}" | tr . _) < %{version}
%description -n %{ldllib}
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
License: GPL-2.0+
Group: System/Libraries
Provides: %(echo "librbio-%{rbiover}" | tr . _) = %{version}
Obsoletes: %(echo "librbio-%{rbiover}" | tr . _) < %{version}
%description -n %{rbiolib}
RBio is a MATLAB toolbox for reading/writing sparse matrices in the
@ -380,6 +426,8 @@ Release: 0
Summary: Multifrontal Sparse QR
License: GPL-2.0+
Group: System/Libraries
Provides: %(echo "libspqr-%{spqrver}" | tr . _) = %{version}
Obsoletes: %(echo "libspqr-%{spqrver}" | tr . _) < %{version}
%description -n %{spqrlib}
SuiteSparseQR is an implementation of the multifrontal sparse QR
@ -398,6 +446,8 @@ Release: 0
Summary: Sparse Multifrontal LU Factorization
License: GPL-2.0+
Group: System/Libraries
Provides: %(echo "libumfpack-%{umfpackver}" | tr . _) = %{version}
Obsoletes: %(echo "libumfpack-%{umfpackver}" | tr . _) < %{version}
%description -n %{umfpacklib}
UMFPACK is a set of routines for solving unsymmetric sparse linear
@ -420,6 +470,8 @@ Provides: libufconfig = %{configver}
Obsoletes: libufconfig < %{configver}
Provides: libUFconfig = %{configver}
Obsoletes: libUFconfig < %{configver}
Provides: %(echo "libsuitesparseconfig%{configver}" | tr . _) = %{version}
Obsoletes: %(echo "libsuitesparseconfig%{configver}" | tr . _) < %{version}
%description -n %{configlib}
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
%setup -q -n SuiteSparse
%patch1 -p1
sed 's/^CHOLMOD_CONFIG =.*/CHOLMOD_CONFIG = -DNPARTITION/' -i SuiteSparse_config/SuiteSparse_config.mk
%if %{without openblas}
sed 's/-lopenblas/-lblas/' -i SuiteSparse_config/SuiteSparse_config.mk
%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
rm -rf MATLAB_Tools/Factorize/Doc/factorize_article.pdf
rm -rf SPQR/Doc/algo_spqr.pdf
rm -rf SPQR/Doc/spqr.pdf
rm CHOLMOD/Doc/IA3_2014_Workshop_Rennich_Stosic_Davis_preprint.pdf
rm KLU/Doc/palamadai_e.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
%patch775418 -p1
%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}
blas_lib=-lopenblas
%else
blas_lib=-lblas
%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
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
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
make MY_METIS_LIB="-lmetis" LAPACK="-llapack" BLAS="$blas_lib" TBB="-ltbb" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" go
chrpath -d lib/*.so.*.*
chrpath -d GraphBLAS/build/*.so
chrpath -d GraphBLAS/build/*.so.*.*
%install
mkdir -p %{buildroot}%{_includedir}/%{name}
mkdir -p %{buildroot}%{_docdir}
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}
mkdir %{buildroot}%{_docdir}/%{name}/SuiteSparse_config-%{configver}/
cp -r SuiteSparse_config/README.txt %{buildroot}%{_docdir}/%{name}/SuiteSparse_config-%{configver}/
cp -Pt %{buildroot}%{_libdir} */Lib/*.a
cp -Pt %{buildroot}%{_libdir} lib/*
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
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
test_symbol=${test_library}_test_symbol
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}
done
@ -600,6 +609,9 @@ popd
%post -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
%postun -n %{klulib} -p /sbin/ldconfig
@ -620,99 +632,123 @@ popd
%files devel
%defattr(-,root,root)
%{_includedir}/%{name}
%{_libdir}/lib*.so
%exclude %{_libdir}/lib*-*.so
%{_docdir}/%{name}-devel
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/README.txt
%doc ChangeLog README.txt
%license LICENSE.txt
%{_docdir}/%{name}-%{version}
%{_libdir}/*.so
%{_includedir}/%{name}/
%files devel-static
%defattr(-,root,root)
%{_libdir}/lib*.a
%doc ChangeLog README.txt
%license LICENSE.txt
%{_libdir}/*.a
%files -n %{amdlib}
%defattr(-, root, root)
%{_libdir}/libamd-%{amdver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/AMD-%{amdver}
%doc AMD/README.txt
%doc AMD/Doc/AMD_UserGuide.pdf AMD/Doc/ChangeLog
%license AMD/Doc/License.txt AMD/Doc/lesser.txt
%{_libdir}/libamd.so.*
%files -n %{btflib}
%defattr(-, root, root)
%{_libdir}/libbtf-%{btfver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/BTF-%{btfver}
%doc BTF/README.txt
%doc BTF/Doc/ChangeLog
%license BTF/Doc/License.txt BTF/Doc/lesser.txt
%{_libdir}/libbtf.so.*
%files -n %{camdlib}
%defattr(-, root, root)
%{_libdir}/libcamd-%{camdver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/CAMD-%{camdver}
%doc CAMD/README.txt
%doc CAMD/Doc/CAMD_UserGuide.pdf CAMD/Doc/ChangeLog
%license CAMD/Doc/License.txt CAMD/Doc/lesser.txt
%{_libdir}/libcamd.so.*
%files -n %{ccolamdlib}
%defattr(-, root, root)
%{_libdir}/libccolamd-%{ccolamdver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/CCOLAMD-%{ccolamdver}
%doc CCOLAMD/README.txt
%doc CCOLAMD/Doc/ChangeLog
%license CCOLAMD/Doc/License.txt CCOLAMD/Doc/lesser.txt
%{_libdir}/libccolamd.so.*
%files -n %{cholmodlib}
%defattr(-, root, root)
%{_libdir}/libcholmod-%{cholmodver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/CHOLMOD-%{cholmodver}
%doc CHOLMOD/README.txt
%doc CHOLMOD/Doc/CHOLMOD_UserGuide.pdf
%license CHOLMOD/Doc/ChangeLog CHOLMOD/Doc/License.txt
%license CHOLMOD/Cholesky/lesser.txt
%license CHOLMOD/MatrixOps/gpl.txt
%{_libdir}/libcholmod.so.*
%files -n %{colamdlib}
%defattr(-, root, root)
%{_libdir}/libcolamd-%{colamdver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/COLAMD-%{colamdver}
%doc COLAMD/README.txt
%doc COLAMD/Doc/ChangeLog
%license COLAMD/Doc/License.txt COLAMD/Doc/lesser.txt
%{_libdir}/libcolamd.so.*
%files -n %{csparselib}
%defattr(-, root, root)
%{_libdir}/libcsparse-%{csparsever}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/CSparse-%{csparsever}
%doc CSparse/README.txt
%doc CSparse/Doc/ChangeLog
%license CSparse/Doc/License.txt CSparse/Doc/lesser.txt
%{_libdir}/libcsparse.so.*
%files -n %{cxsparselib}
%defattr(-, root, root)
%{_libdir}/libcxsparse-%{cxsparsever}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/CXSparse-%{cxsparsever}
%doc CXSparse/README.txt
%doc CXSparse/Doc/ChangeLog
%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}
%defattr(-, root, root)
%{_libdir}/libklu-%{kluver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/KLU-%{kluver}
%doc KLU/README.txt
%doc KLU/Doc/KLU_UserGuide.pdf KLU/Doc/ChangeLog
%license KLU/Doc/License.txt KLU/Doc/lesser.txt
%{_libdir}/libklu.so.*
%files -n %{ldllib}
%defattr(-, root, root)
%{_libdir}/libldl-%{ldlver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/LDL-%{ldlver}
%doc LDL/README.txt
%doc LDL/Doc/ldl_userguide.pdf LDL/Doc/ChangeLog
%license LDL/Doc/License.txt LDL/Doc/lesser.txt
%{_libdir}/libldl.so.*
%files -n %{rbiolib}
%defattr(-, root, root)
%{_libdir}/librbio-%{rbiover}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/RBio-%{rbiover}
%doc RBio/README.txt
%doc RBio/Doc/ChangeLog
%license RBio/Doc/License.txt RBio/Doc/gpl.txt
%{_libdir}/librbio.so.*
%files -n %{spqrlib}
%defattr(-, root, root)
%{_libdir}/libspqr-%{spqrver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/SPQR-%{spqrver}
%doc SPQR/README.txt
%doc SPQR/Doc/spqr_user_guide.pdf SPQR/Doc/ChangeLog SPQR/Doc/README_2.txt
%license SPQR/Doc/License.txt SPQR/Doc/gpl.txt
%{_libdir}/libspqr.so.*
%files -n %{umfpacklib}
%defattr(-, root, root)
%{_libdir}/libumfpack-%{umfpackver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/UMFPACK-%{umfpackver}
%doc UMFPACK/README.txt
%doc UMFPACK/Doc/UMFPACK_QuickStart.pdf UMFPACK/Doc/UMFPACK_UserGuide.pdf UMFPACK/Doc/ChangeLog
%license UMFPACK/Doc/License.txt UMFPACK/Doc/gpl.txt
%{_libdir}/libumfpack.so.*
%files -n %{configlib}
%defattr(-,root,root)
%{_libdir}/libsuitesparseconfig-%{configver}.so
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/SuiteSparse_config-%{configver}
%doc share/doc/*/SUITESPARSECONFIG_README.txt
%license LICENSE.txt
%{_libdir}/libsuitesparseconfig.so.*
%changelog