74f5b23a88
- 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. OBS-URL: https://build.opensuse.org/request/show/534228 OBS-URL: https://build.opensuse.org/package/show/science/suitesparse?expand=0&rev=7
699 lines
24 KiB
RPMSpec
699 lines
24 KiB
RPMSpec
#
|
|
# spec file for package suitesparse
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# 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 http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
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
|
|
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
|
|
Patch775418: bnc775418-enable-SuiteSparse_time-symbol.patch
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gcc-fortran
|
|
BuildRequires: lapack-devel
|
|
BuildRequires: metis-devel
|
|
BuildRequires: openblas-devel
|
|
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
|
|
# 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}
|
|
|
|
%description
|
|
suitesparse is a collection of libraries for computations involving sparse
|
|
matrices.
|
|
|
|
%package devel
|
|
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: metis-devel
|
|
Requires: openblas-devel
|
|
Requires: openmpi-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: 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: GPL-2.0+ and LGPL-2.1+
|
|
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: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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 %{btflib}
|
|
Version: %{btfver}
|
|
Release: 0
|
|
Summary: Permutation to Block Triangular Form
|
|
License: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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 %{ccolamdlib}
|
|
Version: %{ccolamdver}
|
|
Release: 0
|
|
Summary: Constrained Column Approximate Minimum Degree
|
|
License: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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
|
|
#bnc746867 cholmod from suitesparse should be GPL-2.0 and/or LGPL-2.0 licensed
|
|
License: GPL-2.0 and LGPL-2.1
|
|
Group: System/Libraries
|
|
|
|
%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: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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+
|
|
Group: System/Libraries
|
|
# 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+
|
|
Group: System/Libraries
|
|
|
|
%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 %{klulib}
|
|
Version: %{kluver}
|
|
Release: 0
|
|
Summary: Sparse LU Factorization, for Circuit Simulation
|
|
License: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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 %{ldllib}
|
|
Version: %{ldlver}
|
|
Release: 0
|
|
Summary: A Simple LDL^T Factorization
|
|
License: LGPL-2.1+
|
|
Group: System/Libraries
|
|
|
|
%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 %{rbiolib}
|
|
Version: %{rbiover}
|
|
Release: 0
|
|
Summary: MATLAB Toolbox for Reading/Writing Sparse Matrices
|
|
License: GPL-2.0+
|
|
Group: System/Libraries
|
|
|
|
%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 %{spqrlib}
|
|
Version: %{spqrver}
|
|
Release: 0
|
|
Summary: Multifrontal Sparse QR
|
|
License: GPL-2.0+
|
|
Group: System/Libraries
|
|
|
|
%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+
|
|
Group: System/Libraries
|
|
|
|
%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+
|
|
Group: System/Libraries
|
|
Provides: libufconfig = %{configver}
|
|
Obsoletes: libufconfig < %{configver}
|
|
Provides: libUFconfig = %{configver}
|
|
Obsoletes: libUFconfig < %{configver}
|
|
|
|
%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 package.
|
|
|
|
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
|
|
sed 's/^CHOLMOD_CONFIG =.*/CHOLMOD_CONFIG = -DNPARTITION/' -i SuiteSparse_config/SuiteSparse_config.mk
|
|
|
|
# bnc#751746
|
|
rm -rf MATLAB_Tools/Factorize/Doc/factorize_article.pdf
|
|
rm -rf SPQR/Doc/algo_spqr.pdf
|
|
rm -rf SPQR/Doc/spqr.pdf
|
|
# bnc#775418
|
|
%patch775418 -p1
|
|
|
|
%build
|
|
mkdir -p Lib
|
|
|
|
#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]
|
|
amd_libs="libsuitesparseconfig.so"
|
|
camd_libs="libsuitesparseconfig.so"
|
|
ccolamd_libs="libsuitesparseconfig.so"
|
|
cholmod_libs="libamd.so libcamd.so libcolamd.so libccolamd.so libsuitesparseconfig.so -lopenblas -llapack -lmetis"
|
|
colamd_libs="libsuitesparseconfig.so"
|
|
klu_libs="libamd.so libbtf.so libcolamd.so"
|
|
rbio_libs="libsuitesparseconfig.so"
|
|
spqr_libs="libcholmod.so libsuitesparseconfig.so -lopenblas -llapack -lmetis"
|
|
umfpack_libs="libamd.so libcholmod.so libsuitesparseconfig.so -lopenblas -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
|
|
|
|
%install
|
|
mkdir -p %{buildroot}%{_includedir}/%{name}
|
|
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}/
|
|
|
|
%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
|
|
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 %{klulib} -p /sbin/ldconfig
|
|
%postun -n %{klulib} -p /sbin/ldconfig
|
|
|
|
%post -n %{ldllib} -p /sbin/ldconfig
|
|
%postun -n %{ldllib} -p /sbin/ldconfig
|
|
|
|
%post -n %{rbiolib} -p /sbin/ldconfig
|
|
%postun -n %{rbiolib} -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
|
|
%defattr(-,root,root)
|
|
%{_includedir}/%{name}
|
|
%{_libdir}/lib*.so
|
|
%exclude %{_libdir}/lib*-*.so
|
|
%{_docdir}/%{name}-devel
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/README.txt
|
|
|
|
%files devel-static
|
|
%defattr(-,root,root)
|
|
%{_libdir}/lib*.a
|
|
|
|
%files -n %{amdlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libamd-%{amdver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/AMD-%{amdver}
|
|
|
|
%files -n %{btflib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libbtf-%{btfver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/BTF-%{btfver}
|
|
|
|
%files -n %{camdlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libcamd-%{camdver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/CAMD-%{camdver}
|
|
|
|
%files -n %{ccolamdlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libccolamd-%{ccolamdver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/CCOLAMD-%{ccolamdver}
|
|
|
|
%files -n %{cholmodlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libcholmod-%{cholmodver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/CHOLMOD-%{cholmodver}
|
|
|
|
%files -n %{colamdlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libcolamd-%{colamdver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/COLAMD-%{colamdver}
|
|
|
|
%files -n %{csparselib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libcsparse-%{csparsever}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/CSparse-%{csparsever}
|
|
|
|
%files -n %{cxsparselib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libcxsparse-%{cxsparsever}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/CXSparse-%{cxsparsever}
|
|
|
|
%files -n %{klulib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libklu-%{kluver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/KLU-%{kluver}
|
|
|
|
%files -n %{ldllib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libldl-%{ldlver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/LDL-%{ldlver}
|
|
|
|
%files -n %{rbiolib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/librbio-%{rbiover}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/RBio-%{rbiover}
|
|
|
|
%files -n %{spqrlib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libspqr-%{spqrver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/SPQR-%{spqrver}
|
|
|
|
%files -n %{umfpacklib}
|
|
%defattr(-, root, root)
|
|
%{_libdir}/libumfpack-%{umfpackver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/UMFPACK-%{umfpackver}
|
|
|
|
%files -n %{configlib}
|
|
%defattr(-,root,root)
|
|
%{_libdir}/libsuitesparseconfig-%{configver}.so
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/SuiteSparse_config-%{configver}
|
|
|
|
%changelog
|