Sync from SUSE:SLFO:Main suitesparse revision 02b6be8d99013be4e346ed4d81bdfed0

This commit is contained in:
Adrian Schröter 2024-05-04 00:54:16 +02:00
commit 7de8e37506
8 changed files with 1626 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

BIN
SuiteSparse-5.13.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

27
_constraints Normal file
View File

@ -0,0 +1,27 @@
<constraints>
<hardware>
<physicalmemory>
<size unit="G">7</size>
</physicalmemory>
</hardware>
<overwrite>
<conditions>
<arch>aarch64</arch>
</conditions>
<hardware>
<cpu>
<flag>asimdrdm</flag>
</cpu>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>riscv64</arch>
</conditions>
<hardware>
<disk>
<size unit="G">14</size>
</disk>
</hardware>
</overwrite>
</constraints>

View File

@ -0,0 +1,19 @@
diff -urN SuiteSparse.orig/SuiteSparse_config/SuiteSparse_config.h SuiteSparse/SuiteSparse_config/SuiteSparse_config.h
--- SuiteSparse.orig/SuiteSparse_config/SuiteSparse_config.h 2014-10-10 00:19:51.000000000 +0200
+++ SuiteSparse/SuiteSparse_config/SuiteSparse_config.h 2014-10-22 09:40:49.041061515 +0200
@@ -153,13 +153,13 @@
) ;
/* determine which timer to use, if any */
-#ifndef NTIMER
+/*#ifndef NTIMER*/
#ifdef _POSIX_C_SOURCE
#if _POSIX_C_SOURCE >= 199309L
#define SUITESPARSE_TIMER_ENABLED
#endif
#endif
-#endif
+/*#endif*/
/* SuiteSparse printf macro */
#define SUITESPARSE_PRINTF(params) \

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 )

2
suitesparse-rpmlintrc Normal file
View File

@ -0,0 +1,2 @@
# rpmlint could be smarter
addFilter("no-binary")

485
suitesparse.changes Normal file
View File

@ -0,0 +1,485 @@
-------------------------------------------------------------------
Wed Apr 26 15:00:16 UTC 2023 - David Anes <david.anes@suse.com>
- Adjust licenses in SPEC files (bsc#1210879)
-------------------------------------------------------------------
Wed Nov 30 16:55:52 UTC 2022 - Andreas Schwab <schwab@suse.de>
- Update constraints for riscv64
-------------------------------------------------------------------
Sun Sep 4 20:45:29 UTC 2022 - Christoph G <foss@grueninger.de>
- update to 5.13.0
* GraphBLAS v7.2.0: see GraphBLAS/Doc/ChangeLog for details.
- performance: more compact serialization (ZSTD added, now the
default compression method).
- MATLAB interface: faster linear indexing, reshape, bandwidth,
istril, istriu, isbanded, isdiag. C(I,J)=A can now grow the
size of C.
- features: reshape methods, cube root operator, isStoredElement
- bugs: a minor bug; user-defined types were incorrectly limited to
128 bytes in size in v7.0.3.
- remove unused rules from rpmlintrc
-------------------------------------------------------------------
Wed Apr 13 08:41:01 UTC 2022 - David Anes <david.anes@suse.com>
- update to 5.12.0:
* GraphBLAS v7.0.3: see GraphBLAS/Doc/ChangeLog for details.
- performance: GrB_mxm, GrB_assign, and transpose
- bug fix: vector iterator for bitmap
- revised ACM TOMS submission: Doc/toms_parallel_grb2.pdf
- spec bug: GrB_Matrix_diag was implemented incorrectly,
thus requiring a version v7.x
-------------------------------------------------------------------
Tue Mar 15 14:16:51 UTC 2022 - David Anes <david.anes@suse.com>
- Fix bundled library versions:
* libmongoose: 2.0.3 -> 2.0.4
* libspqr: 2.0.9 -> 2.1.0
* libumfpack: 5.7.8 -> 5.7.9
- Update to 5.11.0:
* GraphBLAS v6.2.5: see GraphBLAS/Doc/ChangeLog for changes.
Primary ones highlighted here:
- v2.0 API: v6.x complies with the v2.0 C API of the GraphBLAS Spec.
Note that GrB_wait, GrB_Info are now different than in the v1.3
C API Specification (and in v5.x of SuiteSparse:GraphBLAS).
- GxB_Iterator: to iterate over rows/cols/entries of a matrix or vector
- GxB_eWiseUnion: like eWiseAdd but with the op always applied
- GxB_Matrix/Vector_sort: to sort the vectors of a matrix
- better performance: for sparse-times-dense and dense-times-sparse,
in particular; also other cases for GrB_mxm, up to 10x faster.
- Apple Silicon: port @GrB to Octave 7 (thanks to Gabor Szarnyas)
- added cpu_features: by Google
- added LZ4/LZ4HC: compression library, http://www.lz4.org (BSD 2),
v1.9.3, Copyright (c) 2011-2016, Yann Collet, All Rights Reserved.
- iso-valued matrices and vectors: to exploit the common case of
an unweighted graph
- bug fixes: 4 bugs fixed since SuiteSparse 5.10.1 with
GraphBLAS v5.0.5. 12 other bugs appeared in the interim but
appeared in versions after v5.0.5 but fixed before ever
affecting SuiteSparse itself.
-------------------------------------------------------------------
Thu Feb 24 13:59:58 UTC 2022 - Dirk Müller <dmueller@suse.com>
- build parallel to reduce build time by ~ 30%
-------------------------------------------------------------------
Thu Aug 5 08:13:50 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Use asimdrdm CPU flag for aarch64 to select only more powerful
buildhosts to avoid hanging builds.
-------------------------------------------------------------------
Mon Jul 26 14:34:36 UTC 2021 - Andreas Schwab <schwab@suse.de>
- Enable openblas on riscv64
-------------------------------------------------------------------
Wed May 26 18:23:49 UTC 2021 - Christoph G <foss@grueninger.de>
- Update to version 5.10.1
- Drop disable-Wmisleading-indentation.patch which is no longer
required due to an upstream fix
-------------------------------------------------------------------
Wed May 19 21:29:18 UTC 2021 - Christoph G <foss@grueninger.de>
- Update to version 5.10.0
* GraphBLAS upgraded to 5.0.4: many new features, much faster
performance
-------------------------------------------------------------------
Wed Apr 7 06:18:07 UTC 2021 - Martin Liška <mliska@suse.cz>
- Add disable-Wmisleading-indentation.patch as a temporary workaround
for https://github.com/DrTimothyAldenDavis/SuiteSparse/issues/84
that will be fixed in the next release (boo#1183575).
-------------------------------------------------------------------
Tue Mar 16 07:34:25 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Disable LTO on %arm as it consumes too much memory
-------------------------------------------------------------------
Mon Mar 15 19:04:22 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Update _constraints to avoid OOM
-------------------------------------------------------------------
Sun Mar 7 08:43:38 UTC 2021 - Christoph G <foss@grueninger.de>
- Update to SuiteSparse 5.9.0
* GraphBLAS upgraded from v3.3 to v4.0.3 with many new features,
and increased performance. Betweeness Centrality about 2x
faster, and now faster than the GAP benchmark for larger
matrices. BFS about 5x faster.
-------------------------------------------------------------------
Tue Sep 1 07:36:34 UTC 2020 - Pedro Monreal <pmonreal@suse.com>
- Update to SuiteSparse 5.8.1
* SLIP_LU v1.0.2: resolved issue #51: build error with clang 10
* GraphBLAS v3.3.3: bug fix (GraphBLAS issue #13)
* SLIP_LU v1.0.1 added: for solving Ax=b exactly. Requires
the GNU GMP and MPRF libraries.
* GraphBLAS v3.3.1: see the GraphBLAS/Doc/Changlog
* replaced UFget with ssget: affects nearly all packages:
UMFPACK, KLU, CHOLMOD, CXSparse/CSparse, etc,
but their version numbers are left unchanged since it affects
the MATLAB tests only, not the compiled libraries.
* ssget v2.2.0: better URL redirects
* updates to SuiteSparse build system
-------------------------------------------------------------------
Tue Aug 18 15:52:29 UTC 2020 - Michel Normand <normand@linux.vnet.ibm.com>
- Call %limit_build macro in spec to avoid oom build failure
for ppc64le and aarch64
- Add _constraints with default 5GB min physicalmemory
and 7GB for ppc64/ppc64le
-------------------------------------------------------------------
Thu Mar 19 22:49:23 UTC 2020 - Christoph G <foss@grueninger.de>
- Update to SuiteSparse 5.7.1
* GraphBLAS 3.2.0: better performance, new ANY and PAIR operators,
structural mask, GrB_DESC_* from 1.3 C API Specification.
* CHOLMOD 3.0.14: minor update to cholmod_check to print a matrix
-------------------------------------------------------------------
Wed Nov 6 08:38:31 UTC 2019 - Ana Guerrero Lopez <aguerrero@suse.com>
- Update URL and Source to use GitHub.
-------------------------------------------------------------------
Tue Oct 29 23:12:34 UTC 2019 - Christoph G <foss@grueninger.de>
- Update to SuiteSparse 5.6.0
*GraphBlas 3.1.1: with OpenMP parallelism, and MATLAB interface
-------------------------------------------------------------------
Fri Aug 2 08:23:49 UTC 2019 - Martin Liška <mliska@suse.cz>
- Use FAT LTO objects in order to provide proper static library.
-------------------------------------------------------------------
Sat Apr 6 12:04:27 UTC 2019 - Jan Engelhardt <jengelh@inai.de>
- Trim future visions from descriptions.
-------------------------------------------------------------------
Tue Apr 2 09:24:03 UTC 2019 - Christoph G <foss@grueninger.de>
- Update to SuiteSparse 5.4.0
* GraphBLAS 2.2.2: many upgrades and new features, a few bug fixes
- Update to SuiteSparse 5.3.0
* new package: Mongoose (version 2.0.2)
- doc packages for AMD, CAMD, KLU, LDL, and Mongoose.
-------------------------------------------------------------------
Wed Mar 20 23:23:47 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Remove openmpi BuildRequires, all SuiteSparse libraries are MPI
agnostic.
-------------------------------------------------------------------
Wed Jun 27 00:38:48 UTC 2018 - stefan.bruens@rwth-aachen.de
- Fix conditional to select the right gcc-c++ package, also for the
devel subpackge
-------------------------------------------------------------------
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
- Make openblas optional, using lapack instead
-------------------------------------------------------------------
Mon Oct 16 13:53:59 UTC 2017 - dimstar@opensuse.org
- Fix csparselib define: libcsparse-%{csparseso}. This results in
the (wrongly named) package libcsparsever-3_1_9 being renamed to
libcsparse-3_1_9, matching the content of the package. The old
name is, exceptionally, obsoleted by the new package name (not
provided, as nothing but the -devel package should ever have
referenced the package by name). The obsolete is guarded to no
longer apply, should the version change.
-------------------------------------------------------------------
Mon Jul 10 23:33:01 UTC 2017 - jengelh@inai.de
- Fix RPM groups.
- Trim pointless trailing line whitespace from descriptions.
% must be encoded as %%.
- Trim past-time history from suistesparse_config description.
-------------------------------------------------------------------
Sun Jun 11 01:49:03 UTC 2017 - toddrme2178@gmail.com
- Update to version 4.5.5
* minor fix to SuiteSparse/Makefile for 'make install'
- Update to version 4.5.4
* minor update to SPQR for ACM TOMS submission
- Update to version 4.5.3
* minor changes to Makefiles
- Update to version 4.5.2
* licensing simplified (no other change); refer to PACKAGE/Doc/License.txt
for the license for each package.
- Update to version 4.5.1
* update to Makefiles. Version 4.5.0 is broken on the Mac.
That version also compiles *.so libraries on Linux with
underlinked dependencies to other libraries in SuiteSparse.
For example, AMD requires SuiteSparse_config. The links to
required libraries are now explicitly included in each library,
in SuiteSparse 4.5.1.
* minor change to CHOLMOD/Check/cholmod_write.c, when compiling with
options that disable specific modules
- Update to version 4.5.0
* better Makefiles for creating and installing shared libraries
* CHOLMOD now uses METIS 5.1.0, which is distributed with SuiteSparse
* fix for MATLAB R2015b, which changed how it creates empty matrices,
as compared to prior versions of MATLAB. This change in MATLAB
breaks many of the mexFunctions in prior versions of SuiteSparse.
If you use MATLAB R2015b, you must upgrade to SuiteSparse 4.5.0
or later.
- Update to version 4.4.7
* note that this minor update fails on the Mac, so its
listed on my web page as a 'beta' release.
* Improved the Makefiles of all packages. They now create *.so
shared libraries (*.dylib on the Mac). Also, there is now
only a single SuiteSparse_config.mk file. It now determines
your system automatically, and whether or not you have METIS
and CUDA. It also automatically detects if you have the Intel
compiler or not, and uses it if it finds it. There should be
no need to edit this file for most cases, but you may need to
for your particular system. With this release, there are almost
no changes to the source code, except for the VERSION numbers
defined in the various include *.h files for each package.
- Use faster openblas.
* Remove blas-instead-of-openblas-SuiteSparse_config_mk.patch
- Remove upstream-included no-removal-of-suitesparse_config-output.patch
-------------------------------------------------------------------
Sat Dec 5 13:40:52 UTC 2015 - foss@grueninger.de
- Update to version 4.4.6
* SPQR 2.0.2: changed default tol when A has infs, from inf to realmax (~1e308)
-------------------------------------------------------------------
Wed Nov 18 21:43:05 UTC 2015 - foss@grueninger.de
- Package forgotten C++ includes (*.hpp), too.
- Adjust download link
-------------------------------------------------------------------
Wed Sep 23 08:26:49 UTC 2015 - foss@grueninger.de
- Update to version 4.4.5
+ CHOLMOD 3.0.6:
* minor fix to CHOLMOD (-DNGPL did not work as expected)
* added MATLAB interface for row add/delete (lurowmod)
+ KLU 1.3.3: Fix for klu_dump.c (debugging case only)
+ UFcollection: added additional stats for matrix collection
+ AMD: changed the license. Was LGPL only, now either LGPL or BSD,
at the user's option. See AMD/Doc/License.txt for details.
-------------------------------------------------------------------
Wed Apr 1 11:57:58 UTC 2015 - foss@grueninger.de
- Update to version 4.4.4
+ CHOLMOD version number corrected. In 4.4.3, the CHOLMOD_SUBSUB_VERSION
string was left at '4' (it should have been '5', for CHOLMOD 3.0.5).
This version of SuiteSparse corrects this glitch.
+ Minor changes to comments in SuiteSparse_config.
+ SPQR version 2.0.1 released (minor update to documentation)
-------------------------------------------------------------------
Tue Jan 27 11:18:35 UTC 2015 - dmitry_r@opensuse.org
- Fix linking config
- Add linking tests
-------------------------------------------------------------------
Tue Jan 20 19:27:14 UTC 2015 - foss@grueninger.de
- Update to version 4.4.3
+ CHOLMOD 3.0.5: minor bug fix to MatrixOps/cholmod_symmetry
- Update to version 4.4.2
+ CHOLMOD 3.0.4: serious bug fix in supernodal factorization,
introduced in CHOLMOD 3.0.0 (SuiteSparse 4.3.0). Can cause segfault,
and has no user workaround.
- Upstream SuiteSparse preferes OpenBLAS, added patch
blas-instead-of-openblas-SuiteSparse_config_mk.patch
to use BLAS as SuiteSparse 4.4.1 did
-------------------------------------------------------------------
Mon Nov 10 06:30:46 UTC 2014 - foss@grueninger.de
- Update to version 4.4.1
+ Minor update: two bug fixes (affecting Windows only) for
CHOLMOD and KLU
-------------------------------------------------------------------
Wed Oct 22 14:19:33 UTC 2014 - foss@grueninger.de
- Update to version 4.4.0
+ (added GPU acceleration to CHOLMOD and SPQR. Up to 10x faster
than a multicore CPU.) Not yet working in the package
+ changed to a consistent method for all of SuiteSparse, for
malloc/calloc/realloc, and printf, using SuiteSparse_config.
-------------------------------------------------------------------
Sun Jun 22 06:49:20 UTC 2014 - dmitry_r@opensuse.org
- Fix libraries linking [bnc#883683]
-------------------------------------------------------------------
Sun Nov 10 16:14:00 UTC 2013 - p.drouand@gmail.com
- Update to version 4.2.1
+ no changelog available
- Fix Groups to respect new standards
-------------------------------------------------------------------
Fri Nov 2 15:50:19 UTC 2012 - jengelh@inai.de
- shlib naming: libsuitesparseconfig-4_0_2, not -4.0.2
-------------------------------------------------------------------
Thu Aug 23 16:07:47 UTC 2012 - Rene.vanPaassen@gmail.com
- need to escape % in comments -- Fedora builds choked on them
-------------------------------------------------------------------
Thu Aug 16 19:33:14 UTC 2012 - i@marguerite.su
- also re-fix bnc#746867:
* cholmod from suitesparse should be GPL-2.0 and/or LGPL-2.0 licensed
-------------------------------------------------------------------
Wed Aug 15 02:51:27 UTC 2012 - i@marguerite.su
- fix bnc#775418: SuiteSparse does not ship library which contains
the symbol SuiteSparse_time
* it's because latest SuiteSparse prefers NTIMER.(try to depreciate)
so when there's NTIMER avaiable, tic/toc will not be enabled.
* easy solution is to use "-lSuiteSparse" in the UMFPACK_LIBS
variable in the affected packages like Octave.
* but this seems to affect many packages in science repo, so I
just add a patch comment #IF NTIMER off.
* http://comments.gmane.org/gmane.comp.gnu.octave.general/42837
- add sub-package libsuitesparse_config which is formly known as UFconfig.
* also add provides/obsoltes of UFconfig.
* add patch0 to prevent removal of .o after .a is built.
we still need .o to make shared libsuitesparseconfig.so
-------------------------------------------------------------------
Tue Jul 31 17:57:45 UTC 2012 - i@marguerite.su
- Update to version 4.0.2
* no changelog available.
-------------------------------------------------------------------
Wed Jun 6 12:05:34 UTC 2012 - i@marguerite.su
- fix bnc#751746.
-------------------------------------------------------------------
Mon Jun 4 13:45:07 UTC 2012 - toddrme2178@gmail.com
- Update to version 4.0.0. Major changes:
* added GPU support for CHOLMOD
* Renamed UFconfig to SuiteSparse_config
- Fix licenses (some libraries are LGPL-2.1+, some are GPL-2.0+,
and one is both).
- Change descriptions to upstream versions
- Build csparse package
- Clean up spec file
* Remove hard-coded library versions everywhere. Each library
version only needs to be changed in two places, which are right
next to each other
- Move README to -devel package and remove now-empty base package
- Changed group to match lapack/blas group (which this package is
essentially an extension of)
-------------------------------------------------------------------
Sun Feb 19 06:41:09 UTC 2012 - i@marguerite.su
- fix timestamp error in changelog, dont know why it omit zero in
time format.
-------------------------------------------------------------------
Sat Feb 18 16:15:32 UTC 2012 - jengelh@medozas.de
- add rpmlintrc to shut up false positives (after inquiry by
MargueriteSu)
-------------------------------------------------------------------
Fri Feb 17 14:01:01 UTC 2012 - i@marguerite.su
- fix libraries version tags of suitesparse-devel requires.
-------------------------------------------------------------------
Wed Feb 15 07:36:47 UTC 2012 - i@marguerite.su
- fix bug#746867. cholmod is licensed under GPL-2.0 and LGPL-2.0 only,
GPL-2.0 only prevents other components to be licensed under a high
version of the same license.
-------------------------------------------------------------------
Tue Feb 7 17:10:48 UTC 2012 - jengelh@medozas.de
- Apply shared library policy
http://en.opensuse.org/openSUSE:Shared_library_packaging_policy
-------------------------------------------------------------------
Sat Feb 4 11:38:15 UTC 2012 - i@marguerite.su
- update to version 3.7.0
-------------------------------------------------------------------
Sun Dec 21 00:00:00 UTC 2011 - coyoteuser@gmail.com
- updated to latest version 3.2.0
- added gcc4.3.2 fix for spqr.hpp
- changed source to bz2 archive
-------------------------------------------------------------------
Mon Dec 8 00:00:00 UTC 2008 - coyoyeuser@gmail.com
- Initial release

874
suitesparse.spec Normal file
View File

@ -0,0 +1,874 @@
#
# spec file for package suitesparse
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%ifarch %{arm}
%define _lto_cflags %{nil}
%endif
%ifarch m68k
%bcond_with openblas
%else
%bcond_without openblas
%endif
Name: suitesparse
Summary: A collection of sparse matrix libraries
License: BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Development/Libraries/C and C++
Version: 5.13.0
Release: 0
URL: https://people.engr.tamu.edu/davis/suitesparse.html
Source0: https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/v%{version}.tar.gz#/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
%if 0%{?suse_version} < 1500
BuildRequires: gcc7
BuildRequires: gcc7-c++
%else
BuildRequires: gcc >= 4.9
BuildRequires: gcc-c++ >= 4.9
%endif
BuildRequires: chrpath
BuildRequires: cmake >= 3.13
BuildRequires: gcc-fortran
BuildRequires: gmp-devel
BuildRequires: lapack-devel
BuildRequires: m4
BuildRequires: memory-constraints
BuildRequires: metis-devel
BuildRequires: mpfr-devel
BuildRequires: tbb-devel
%if %{with openblas}
BuildRequires: openblas-devel
%endif
%define amdver 2.4.6
%define btfver 1.2.6
%define camdver 2.4.6
%define ccolamdver 2.9.6
%define cholmodver 3.0.14
%define colamdver 2.9.6
%define csparsever 3.2.0
%define cxsparsever 3.2.0
%define graphblasver 7.2.0
%define kluver 1.3.9
%define ldlver 2.2.6
%define mongoosever 2.0.4
%define rbiover 2.2.6
%define slipluver 1.0.2
%define spqrver 2.1.0
%define umfpackver 5.7.9
# 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 5.13.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 mongooselib %(echo "libmongoose%{mongoosever}" | cut -d "." -f1)
%define rbiolib %(echo "librbio%{rbiover}" | cut -d "." -f1)
%define sliplulib %(echo "libsliplu%{slipluver}" | 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
matrices.
%package devel
Summary: Development headers for SuiteSparse
License: BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Development/Libraries/C and C++
%if 0%{?suse_version} < 1500
Requires: gcc7-c++
%else
Requires: gcc-c++ >= 4.9
%endif
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: %{mongooselib} = %{mongoosever}
Requires: %{rbiolib} = %{rbiover}
Requires: %{sliplulib} = %{slipluver}
Requires: %{spqrlib} = %{spqrver}
Requires: %{umfpacklib} = %{umfpackver}
Requires: metis-devel
%if %{with openblas}
Requires: openblas-devel
%else
Requires: lapack-devel
%endif
Requires: tbb-devel
# make sure developers can find these packages
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 = %{graphblasver}
Obsoletes: libgraphblas-devel < %{graphblasver}
Provides: libklu-devel = %{kluver}
Obsoletes: libklu-devel < %{kluver}
Provides: libldl-devel = %{ldlver}
Obsoletes: libldl-devel < %{ldlver}
Provides: libmongoose-devel = %{mongoosever}
Obsoletes: libmongoose-devel < %{mongoosever}
Provides: librbio-devel = %{rbiover}
Obsoletes: librbio-devel < %{rbiover}
Provides: libsliplu-devel = %{slipluver}
Obsoletes: libsliplu-devel < %{slipluver}
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}
%description devel
suitesparse is a collection of libraries for computations involving
sparse matrices.
The suitesparse-devel package contains files needed for developing
applications which use the suitesparse libraries.
%package devel-static
Summary: Static version of SuiteSparse libraries
License: BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
%description devel-static
The suitesparse-static package contains the statically linkable
version of the suitesparse libraries.
%package -n %{amdlib}
Version: %{amdver}
Release: 0
Summary: Symmetric Approximate Minimum Degree
License: BSD-3-Clause
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
Cholesky factorization (or for LU factorization with diagonal
pivoting). There are versions in both C and Fortran. A MATLAB
interface is provided.
Note that this software has nothing to do with AMD the company.
AMD is part of the SuiteSparse sparse matrix suite.
%package -n libamd-doc
Summary: Documentation for libamd
License: BSD-3-Clause
Group: Documentation/Other
%description -n libamd-doc
Documentation for libamd.
%package -n %{btflib}
Version: %{btfver}
Release: 0
Summary: Permutation to Block Triangular Form
License: LGPL-2.1-or-later
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
block upper triangular form (more precisely, it computes a Dulmage-
Mendelsohn decomposition).
BTF is part of the SuiteSparse sparse matrix suite.
%package -n %{camdlib}
Version: %{camdver}
Release: 0
Summary: Symmetric Approximate Minimum Degree
License: BSD-3-Clause
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
Cholesky factorization (or for LU factorization with diagonal
pivoting). There are versions in both C and Fortran. A MATLAB
interface is provided.
CAMD is part of the SuiteSparse sparse matrix suite.
%package -n libcamd-doc
Summary: Documentation for libcamd
License: BSD-3-Clause
Group: Documentation/Other
%description -n libcamd-doc
Documentation for libcam.
%package -n %{ccolamdlib}
Version: %{ccolamdver}
Release: 0
Summary: Constrained Column Approximate Minimum Degree
License: BSD-3-Clause
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
algorithm, (like COLAMD), but it can also be given a set of ordering
constraints. CCOLAMD is required by the CHOLMOD package.
CCOLAMD is part of the SuiteSparse sparse matrix suite.
%package -n %{cholmodlib}
Version: %{cholmodver}
Release: 0
Summary: Supernodal Sparse Cholesky Factorization and Update/Downdate
License: GPL-2.0-only AND LGPL-2.1-only
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}
CHOLMOD is a set of ANSI C routines for sparse Cholesky factorization
and update/downdate. A MATLAB interface is provided.
The performance of CHOLMOD was compared with 10 other codes in a
paper by Nick Gould, Yifan Hu, and Jennifer Scott. see also their raw
data. Comparing BCSLIB-EXT, CHOLMOD, MA57, MUMPS, Oblio, PARDISO,
SPOOLES, SPRSBLKLLT, TAUCS, UMFPACK, and WSMP, on 87 large symmetric
positive definite matrices, they found CHOLMOD to be fastest for 42
of the 87 matrices. Its run time is either fastest or within 10%% of
the fastest for 73 out of 87 matrices. Considering just the larger
matrices, it is either the fastest or within 10%% of the fastest for
40 out of 42 matrices. It uses the least amount of memory (or within
10%% of the least) for 35 of the 42 larger matrices. Jennifer Scott
and Yifan Hu also discuss the design considerations for a sparse
direct code.
CHOLMOD is part of the SuiteSparse sparse matrix suite.
%package -n %{colamdlib}
Version: %{colamdver}
Release: 0
Summary: Column Approximate Minimum Degree
License: BSD-3-Clause
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
computes a permutation vector P such that the LU factorization of
A (:,P) tends to be sparser than that of A. The Cholesky
factorization of (A (:,P))'*(A (:,P)) will also tend to be sparser
than that of A'*A. SYMAMD is a symmetric minimum degree ordering
method based on COLAMD, available as a MATLAB-callable function. It
constructs a matrix M such that M'*M has the same pattern as A, and
then uses COLAMD to compute a column ordering of M. Colamd and symamd
tend to be faster and generate better orderings than their MATLAB
counterparts, colmmd and symmmd.
COLAMD is part of the SuiteSparse sparse matrix suite.
%package -n %{csparselib}
Version: %{csparsever}
Release: 0
Summary: Instructional Sparse Matrix Package
License: LGPL-2.1-or-later
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
%endif
%description -n %{csparselib}
CSparse is a small yet feature-rich sparse matrix package written
specifically for a book. The purpose of the package is to demonstrate
a wide range of sparse matrix algorithms in as concise a code as
possible. CSparse is about 2,200 lines long (excluding its MATLAB
interface, demo codes, and test codes), yet it contains algorithms
(either asympotical optimal or fast in practice) for all of the
following functions described below. A MATLAB interface is included.
Note that the LU and Cholesky factorization algorithms are not as
fast as UMFPACK or CHOLMOD. Other functions have comparable
performance as their MATLAB equivalents (some are faster).
Documentation is very terse in the code; it is fully documented in
the book. Some indication of how to call the C functions in CSparse
is given by the CSparse/MATLAB/*.m help files.
CSparse is part of the SuiteSparse sparse matrix suite.
%package -n %{cxsparselib}
Version: %{cxsparsever}
Release: 0
Summary: An extended version of CSparse
License: LGPL-2.1-or-later
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
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-or-later
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
circuit simulation. It was highlighted in the May 2007 issue of SIAM
News, Sparse Matrix Algorithm Drives SPICE Performance Gains. It is
the "fast sparse-matrix solver" mentioned in the article.
KLU is part of the SuiteSparse sparse matrix suite.
%package -n libklu-doc
Summary: Documentation for libklu
License: LGPL-2.1-or-later
Group: Documentation/Other
%description -n libklu-doc
Documentation for libklu.
%package -n %{ldllib}
Version: %{ldlver}
Release: 0
Summary: A Simple LDL^T Factorization
License: LGPL-2.1-or-later
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-
definite sparse matrices, with some applicability to symmetric
indefinite matrices. Its primary purpose is to illustrate much of the
basic theory of sparse matrix algorithms in as concise a code as
possible, including an elegant new method of sparse symmetric
factorization that computes the factorization row-by-row but stores
it column-by-column. The entire symbolic and numeric factorization
consists of a total of only 49 lines of code. The package is written
in C, and includes a MATLAB interface.
LDL is part of the SuiteSparse sparse matrix suite.
%package -n libldl-doc
Summary: Documentation for libldl
License: LGPL-2.1-or-later
Group: Documentation/Other
%description -n libldl-doc
Documentation for libldl.
%package -n %{mongooselib}
Version: %{mongoosever}
Release: 0
Summary: Graph partitioning library
License: GPL-3.0-only
Group: System/Libraries
Provides: %(echo "libldl-%{mongoosever}" | tr . _) = %{version}
Obsoletes: %(echo "libldl-%{mongoosever}" | tr . _) < %{version}
%description -n %{mongooselib}
Mongoose is a graph partitioning library. Currently, Mongoose only
supports edge partitioning.
mongoose is part of the SuiteSparse sparse matrix suite.
%package -n libmongoose-doc
Summary: Documentation for libmongoose
License: GPL-3.0-only
Group: Documentation/Other
%description -n libmongoose-doc
Documentation for libmongoose.
%package -n %{rbiolib}
Version: %{rbiover}
Release: 0
Summary: MATLAB Toolbox for Reading/Writing Sparse Matrices
License: GPL-2.0-or-later
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
Rutherford/Boeing format, and for reading/writing problems in the UF
Sparse Matrix Collection from/to a set of files in a directory.
Version 2.0+ is written in C.
RBio is part of the SuiteSparse sparse matrix suite.
%package -n %{sliplulib}
Version: %{slipluver}
Release: 0
Summary: SLIP LU, A Sparse Left-Looking Integer Preserving LU Factorization
License: GPL-2.0-or-later AND LGPL-3.0-or-later
Group: System/Libraries
Provides: %(echo "libsliplu-%{slipluver}" | tr . _) = %{version}
Obsoletes: %(echo "libsliplu-%{slipluver}" | tr . _) < %{version}
%description -n %{sliplulib}
SLIP LU is software package used to solve a sparse systems of linear equations
exactly using the Sparse Left-looking Integer-Preserving LU factorization.
SLIP LU solves a sparse system of linear equations using a given input
matrix and right hand side vector file. This code can output the final
solution to a user specified output file in either double precision or
full precision rational numbers. If you intend to use SLIP LU within
another program, refer to examples for help with this.
SLIP LU is part of the SuiteSparse sparse matrix suite.
%package -n %{spqrlib}
Version: %{spqrver}
Release: 0
Summary: Multifrontal Sparse QR
License: GPL-2.0-or-later
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
factorization method. Parallelism is exploited both in the BLAS and
across different frontal matrices using Intel's Threading Building
Blocks, a shared-memory programming model for modern multicore
architectures. It can obtain a substantial fraction of the
theoretical peak performance of a multicore computer. The package is
written in C++ with user interfaces for MATLAB, C, and C++.
SuiteSparseQR is part of the SuiteSparse sparse matrix suite.
%package -n %{umfpacklib}
Version: %{umfpackver}
Release: 0
Summary: Sparse Multifrontal LU Factorization
License: GPL-2.0-or-later
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
systems, Ax=b, using the Unsymmetric MultiFrontal method. Written in
ANSI/ISO C, with a MATLAB (Version 6.0 and later) interface. Appears
as a built-in routine (for lu, backslash, and forward slash) in M
ATLAB. Includes a MATLAB interface, a C-callable interface, and a
Fortran-callable interface. Note that "UMFPACK" is pronounced in two
syllables, "Umph Pack". It is not "You Em Ef Pack".
UMFPACK is part of the SuiteSparse sparse matrix suite.
%package -n %{configlib}
Version: %{configver}
Release: 0
Summary: Common configurations for all packages in SuiteSparse
License: GPL-2.0-or-later
Group: System/Libraries
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,
including SuiteSparseQR, AMD, COLAMD, CCOLAMD, CHOLMOD, KLU, BTF,
LDL, CXSparse, RBio, and UMFPACK. It is not required by CSparse,
which is a stand-alone packages. Mongoose uses SuiteSparse_config,
if available but works also without it.
SuiteSparse_config contains a configuration file for "make"
(SuiteSparse_config.mk) and an include file (SuiteSparse_config.h).
Also included in SuiteSparse_config is a replacement for the
BLAS/LAPACK xerbla routine that does not print a warning message
(helpful if you don't want to link the entire Fortran I/O library
into a C application).
SuiteSparse_config is part of the SuiteSparse sparse matrix suite.
%prep
%setup -q -n SuiteSparse-%{version}
%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 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
%define limitbuild 1500
%limit_build -m %{limitbuild}
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%if 0%{?suse_version} < 1500
export CC=gcc-7
export CXX=g++-7
%endif
%if %{with openblas}
blas_lib=-lopenblas
%else
blas_lib=-lblas
%endif
# Better performance with -flto
unset MALLOC_CHECK_
unset MALLOC_PERTURB_
%make_jobs 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.*.*
chrpath -d Mongoose/build/lib/*.so
chrpath -d Mongoose/build/lib/*.so.*.*
%install
mkdir -p %{buildroot}%{_includedir}/%{name}
mkdir -p %{buildroot}%{_docdir}
mkdir -p %{buildroot}%{_libdir}
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}%{_libdir} Mongoose/build/lib/*.so
cp -Pt %{buildroot}%{_libdir} Mongoose/build/lib/*.so.*
cp -Pt %{buildroot}%{_includedir}/%{name} include/*
cp -Pt %{buildroot}%{_includedir}/%{name} GraphBLAS/Include/*.h
cp -Prt %{buildroot}%{_docdir} share/doc/*
%check
amd_test_symbol="amd_postorder"
btf_test_symbol="btf_order"
camd_test_symbol="camd_postorder"
ccolamd_test_symbol="ccolamd"
colamd_test_symbol="colamd"
cholmod_test_symbol="cholmod_start"
csparse_test_symbol="cs_sqr"
cxsparse_test_symbol="cs_di_sqr"
klu_test_symbol="klu_solve"
ldl_test_symbol="ldl_symbolic"
rbio_test_symbol="RBread"
spqr_test_symbol="SuiteSparseQR_C_symbolic"
umfpack_test_symbol="umfpack_toc"
mkdir -p linking_test
pushd linking_test
cat > linking_test.c.in << 'EOF'
char @test_symbol@ ();
int main ()
{
return @test_symbol@ ();
}
EOF
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{_libdir}
for test_library in amd btf camd ccolamd colamd cholmod csparse cxsparse klu ldl rbio spqr umfpack; do
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
popd
%post -n %{amdlib} -p /sbin/ldconfig
%postun -n %{amdlib} -p /sbin/ldconfig
%post -n %{btflib} -p /sbin/ldconfig
%postun -n %{btflib} -p /sbin/ldconfig
%post -n %{camdlib} -p /sbin/ldconfig
%postun -n %{camdlib} -p /sbin/ldconfig
%post -n %{ccolamdlib} -p /sbin/ldconfig
%postun -n %{ccolamdlib} -p /sbin/ldconfig
%post -n %{cholmodlib} -p /sbin/ldconfig
%postun -n %{cholmodlib} -p /sbin/ldconfig
%post -n %{colamdlib} -p /sbin/ldconfig
%postun -n %{colamdlib} -p /sbin/ldconfig
%post -n %{csparselib} -p /sbin/ldconfig
%postun -n %{csparselib} -p /sbin/ldconfig
%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
%post -n %{ldllib} -p /sbin/ldconfig
%postun -n %{ldllib} -p /sbin/ldconfig
%post -n %{mongooselib} -p /sbin/ldconfig
%postun -n %{mongooselib} -p /sbin/ldconfig
%post -n %{rbiolib} -p /sbin/ldconfig
%postun -n %{rbiolib} -p /sbin/ldconfig
%post -n %{sliplulib} -p /sbin/ldconfig
%postun -n %{sliplulib} -p /sbin/ldconfig
%post -n %{spqrlib} -p /sbin/ldconfig
%postun -n %{spqrlib} -p /sbin/ldconfig
%post -n %{umfpacklib} -p /sbin/ldconfig
%postun -n %{umfpacklib} -p /sbin/ldconfig
%post -n %{configlib} -p /sbin/ldconfig
%postun -n %{configlib} -p /sbin/ldconfig
%files devel
%doc ChangeLog README.md
%license LICENSE.txt
%{_docdir}/%{name}-%{version}
%{_libdir}/*.so
%{_includedir}/%{name}/
%files devel-static
%doc ChangeLog README.md
%license LICENSE.txt
%{_libdir}/*.a
%files -n %{amdlib}
%doc AMD/README.txt
%doc AMD/Doc/ChangeLog
%license AMD/Doc/License.txt AMD/Doc/lesser.txt
%{_libdir}/libamd.so.*
%files -n libamd-doc
%doc AMD/Doc/AMD_UserGuide.pdf
%files -n %{btflib}
%doc BTF/README.txt
%doc BTF/Doc/ChangeLog
%license BTF/Doc/License.txt BTF/Doc/lesser.txt
%{_libdir}/libbtf.so.*
%files -n %{camdlib}
%doc CAMD/README.txt
%doc CAMD/Doc/ChangeLog
%license CAMD/Doc/License.txt CAMD/Doc/lesser.txt
%{_libdir}/libcamd.so.*
%files -n libcamd-doc
%doc CAMD/Doc/CAMD_UserGuide.pdf
%files -n %{ccolamdlib}
%doc CCOLAMD/README.txt
%doc CCOLAMD/Doc/ChangeLog
%license CCOLAMD/Doc/License.txt CCOLAMD/Doc/lesser.txt
%{_libdir}/libccolamd.so.*
%files -n %{cholmodlib}
%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}
%doc COLAMD/README.txt
%doc COLAMD/Doc/ChangeLog
%license COLAMD/Doc/License.txt COLAMD/Doc/lesser.txt
%{_libdir}/libcolamd.so.*
%files -n %{csparselib}
%doc CSparse/README.txt
%doc CSparse/Doc/ChangeLog
%license CSparse/Doc/License.txt CSparse/Doc/lesser.txt
%{_libdir}/libcsparse.so.*
%files -n %{cxsparselib}
%doc CXSparse/README.txt
%doc CXSparse/Doc/ChangeLog
%license CXSparse/Doc/License.txt CXSparse/Doc/lesser.txt
%{_libdir}/libcxsparse.so.*
%files -n %{graphblaslib}
%doc GraphBLAS/README.md
%doc GraphBLAS/Doc/GraphBLAS_UserGuide.pdf
%license GraphBLAS/Doc/ChangeLog GraphBLAS/LICENSE
%{_libdir}/libgraphblas.so.*
%files -n %{klulib}
%doc KLU/README.txt
%doc KLU/Doc/ChangeLog
%license KLU/Doc/License.txt KLU/Doc/lesser.txt
%{_libdir}/libklu.so.*
%files -n libklu-doc
%doc KLU/Doc/KLU_UserGuide.pdf
%files -n %{ldllib}
%doc LDL/README.txt
%doc LDL/Doc/ChangeLog
%license LDL/Doc/License.txt LDL/Doc/lesser.txt
%{_libdir}/libldl.so.*
%files -n libldl-doc
%doc LDL/Doc/ldl_userguide.pdf
%files -n %{mongooselib}
%doc Mongoose/README.md
%license Mongoose/Doc/License.txt
%{_libdir}/libmongoose.so.*
%files -n libmongoose-doc
%doc Mongoose/Doc/Mongoose_UserGuide.pdf
%files -n %{rbiolib}
%doc RBio/README.txt
%doc RBio/Doc/ChangeLog
%license RBio/Doc/License.txt RBio/Doc/gpl.txt
%{_libdir}/librbio.so.*
%files -n %{sliplulib}
%doc SLIP_LU/README.md
%doc SLIP_LU/Doc/SLIP_LU_UserGuide.pdf
%license SLIP_LU/License/license.txt SLIP_LU/License/GPLv2.txt
%license SLIP_LU/License/lesserv3.txt SLIP_LU/License/CONTRIBUTOR-LICENSE.txt
%{_libdir}/libsliplu.so.*
%files -n %{spqrlib}
%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}
%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}
%doc share/doc/*/SUITESPARSECONFIG_README.txt
%license LICENSE.txt
%{_libdir}/libsuitesparseconfig.so.*
%changelog