diff --git a/SuiteSparse-4.4.6.tar.gz b/SuiteSparse-4.4.6.tar.gz new file mode 100644 index 0000000..c0aaf9a Binary files /dev/null and b/SuiteSparse-4.4.6.tar.gz differ diff --git a/suitesparse.spec b/suitesparse.spec new file mode 100644 index 0000000..da26af9 --- /dev/null +++ b/suitesparse.spec @@ -0,0 +1,294 @@ +Name: suitesparse +Version: 4.4.6 +Release: 17 +Summary: Sparse Matrix Collection +License: (LGPLv2+ or BSD) and LGPLv2+ and GPLv2+ +URL: http://faculty.cse.tamu.edu/davis/suitesparse.html +Source0: http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-%{version}.tar.gz +BuildRequires: gcc-c++ openblas-devel tbb-devel hardlink +Obsoletes: umfpack <= 5.0.1 ufsparse <= 2.1.1 +Provides: ufsparse = %{version}-%{release} + +%description +SuiteSparse is a suite of sparse matrix algorithms.The package includes the following libraries: + AMD approximate minimum degree ordering + BTF permutation to block triangular form (beta) + CAMD constrained approximate minimum degree ordering + COLAMD column approximate minimum degree ordering + CCOLAMD constrained column approximate minimum degree ordering + CHOLMOD sparse Cholesky factorization + CSparse a concise sparse matrix package + CXSparse CSparse extended: complex matrix, int and long int support + KLU sparse LU factorization, primarily for circuit simulation + LDL a simple LDL factorization + SQPR a multithread, multifrontal, rank-revealing sparse QR + factorization method + UMFPACK sparse LU factorization + SuiteSparse_config configuration file for all the above packages. + RBio read/write files in Rutherford/Boeing format + +%package devel +Summary: Development files for the suitesparse library +Requires: %{name} = %{version}-%{release} +Provides: ufsparse-devel = %{version}-%{release} ufsparse-static = %{version}-%{release} suitesparse-static = %{version}-%{release} +Obsoletes: umfpack-devel <= 5.0.1 ufsparse-devel <= 2.1.1 suitesparse-static < %{version}-%{release} + +%description devel +The suitesparse-devel package includes header files and libraries necessary for the suitesparse library. + +%package help +Summary: This package contains help documents +BuildArch: noarch +Requires: %{name} = %{version}-%{release} +Provides: suitesparse-doc = %{version}-%{release} +Obsoletes: suitesparse-doc < %{version}-%{release} + +%description help +Files for help with suitesparse. + +%prep +%autosetup -n SuiteSparse -p1 +for fil in $(grep -Frl 'pragma ivdep' .); do + sed -i 's/pragma ivdep/pragma GCC ivdep/' $fil +done +sed -i '/^ CF =/ s/ -O3 -fexceptions//' SuiteSparse_config/SuiteSparse_config.mk + +%build +install -d Doc/{AMD,BTF,CAMD,CCOLAMD,CHOLMOD,COLAMD,KLU,LDL,UMFPACK,SPQR,RBio} Lib Include +cd SuiteSparse_config + %make_build CFLAGS="$RPM_OPT_FLAGS" + ar x libsuitesparseconfig.a + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libsuitesparseconfig.so.4 -o libsuitesparseconfig.so.4.4.4 ../SuiteSparse_config/*.o -lm + ln -sf libsuitesparseconfig.so.4.4.4 libsuitesparseconfig.so.4 + ln -sf libsuitesparseconfig.so.4.4.4 libsuitesparseconfig.so + install -D ../SuiteSparse_config/*.a ./ + cd ../SuiteSparse_config + install -D *.h ../Include +cd .. + +cd AMD + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libamd.so.2 -o libamd.so.2.4.1 ../AMD/Lib/*.o libsuitesparseconfig.so.4 -lm + ln -sf libamd.so.2.4.1 libamd.so.2 + ln -sf libamd.so.2.4.1 libamd.so + install -D ../AMD/Lib/*.a ./ + cd ../AMD + install -D Include/*.h ../Include + install -D README.txt Doc/License.txt Doc/lesser.txt Doc/ChangeLog Doc/*.pdf ../Doc/AMD +cd .. + +cd BTF + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libbtf.so.1 -o libbtf.so.1.2.1 ../BTF/Lib/*.o + ln -sf libbtf.so.1.2.1 libbtf.so.1 + ln -sf libbtf.so.1.2.1 libbtf.so + install -D ../BTF/Lib/*.a ./ + cd ../BTF + install -D Include/*.h ../Include + install -D README.txt Doc/* ../Doc/BTF +cd .. + +cd CAMD + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libcamd.so.2 -o libcamd.so.2.4.1 ../CAMD/Lib/*.o libsuitesparseconfig.so.4 -lm + ln -sf libcamd.so.2.4.1 libcamd.so.2 + ln -sf libcamd.so.2.4.1 libcamd.so + install -D ../CAMD/Lib/*.a ./ + cd ../CAMD + install -D Include/*.h ../Include + install -D README.txt Doc/ChangeLog Doc/License Doc/*.pdf ../Doc/CAMD +cd .. + +cd CCOLAMD + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libccolamd.so.2 -o libccolamd.so.2.9.1 ../CCOLAMD/Lib/*.o libsuitesparseconfig.so.4 -lm + ln -sf libccolamd.so.2.9.1 libccolamd.so.2 + ln -sf libccolamd.so.2.9.1 libccolamd.so + install -D ../CCOLAMD/Lib/*.a ./ + cd ../CCOLAMD + install -D Include/*.h ../Include + install -D README.txt Doc/* ../Doc/CCOLAMD +cd .. + +cd COLAMD + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libcolamd.so.2 -o libcolamd.so.2.9.1 ../COLAMD/Lib/*.o libsuitesparseconfig.so.4 -lm + ln -sf libcolamd.so.2.9.1 libcolamd.so.2 + ln -sf libcolamd.so.2.9.1 libcolamd.so + install -D ../COLAMD/Lib/*.a ./ + cd ../COLAMD + install -D Include/*.h ../Include + install -D README.txt Doc/* ../Doc/COLAMD +cd .. + +CHOLMOD_FLAGS="$RPM_OPT_FLAGS -DNPARTITION" +cd CHOLMOD + cd Lib + %make_build CFLAGS="$CHOLMOD_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libcholmod.so.3 -o libcholmod.so.3.0.6 ../CHOLMOD/Lib/*.o \ + -lopenblas libamd.so.2 libcamd.so.2 libcolamd.so.2 libccolamd.so.2 libsuitesparseconfig.so.4 -lm + ln -sf libcholmod.so.3.0.6 libcholmod.so.3 + ln -sf libcholmod.so.3.0.6 libcholmod.so + install -D ../CHOLMOD/Lib/*.a ./ + cd ../CHOLMOD + install -D Include/*.h ../Include + install -D README.txt Doc/*.pdf ../Doc/CHOLMOD + install -D Cholesky/License.txt ../Doc/CHOLMOD/Cholesky_License.txt + install -D Core/License.txt ../Doc/CHOLMOD/Core_License.txt + install -D MatrixOps/License.txt ../Doc/CHOLMOD/MatrixOps_License.txt + install -D Partition/License.txt ../Doc/CHOLMOD/Partition_License.txt + install -D Supernodal/License.txt ../Doc/CHOLMOD/Supernodal_License.txt +cd .. + +cd CXSparse + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libcxsparse.so.3 -o libcxsparse.so.3.1.4 ../CXSparse/Lib/*.o -lm + ln -sf libcxsparse.so.3.1.4 libcxsparse.so.3 + ln -sf libcxsparse.so.3.1.4 libcxsparse.so + install -D ../CXSparse/Lib/*.a ./ + cd ../CXSparse + install -D Include/cs.h ../Include + install -d ../Doc/CXSparse/ + install -D Doc/* ../Doc/CXSparse +cd .. + +cd KLU + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libklu.so.1 -o libklu.so.1.3.3 ../KLU/Lib/*.o \ + libamd.so.2 libcolamd.so.2 libbtf.so.1 libsuitesparseconfig.so.4 + ln -sf libklu.so.1.3.3 libklu.so.1 + ln -sf libklu.so.1.3.3 libklu.so + install -D ../KLU/Lib/*.a ./ + cd ../KLU + install -D Include/*.h ../Include + install -D README.txt Doc/lesser.txt ../Doc/KLU +cd .. + +cd LDL + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libldl.so.2 -o libldl.so.2.2.1 ../LDL/Lib/*.o + ln -sf libldl.so.2.2.1 libldl.so.2 + ln -sf libldl.so.2.2.1 libldl.so + install -D ../LDL/Lib/*.a ./ + cd ../LDL + install -D Include/*.h ../Include + install -D README.txt Doc/ChangeLog Doc/lesser.txt Doc/*.pdf ../Doc/LDL +cd .. + +cd UMFPACK + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,libumfpack.so.5 -o libumfpack.so.5.7.1 ../UMFPACK/Lib/*.o \ + -lopenblas libamd.so.2 libcholmod.so.3 libsuitesparseconfig.so.4 -lm + ln -sf libumfpack.so.5.7.1 libumfpack.so.5 + ln -sf libumfpack.so.5.7.1 libumfpack.so + install -D ../UMFPACK/Lib/*.a ./ + cd ../UMFPACK + install -D Include/*.h ../Include + install -D README.txt Doc/License Doc/ChangeLog Doc/gpl.txt Doc/*.pdf ../Doc/UMFPACK +cd .. + +cd SPQR + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS -DHAVE_TBB -DNPARTITION" + cd .. + cd ../Lib + g++ -shared %{?__global_ldflags} -Wl,-soname,libspqr.so.2 -o libspqr.so.2.0.1 ../SPQR/Lib/*.o \ + -lopenblas -ltbb libcholmod.so.3 libsuitesparseconfig.so.4 -lm + ln -sf libspqr.so.2.0.1 libspqr.so.2 + ln -sf libspqr.so.2.0.1 libspqr.so + install -D ../SPQR/Lib/*.a ./ + cd ../SPQR + install -D Include/*.h* ../Include + install -D README{,_SPQR}.txt + install -D README_SPQR.txt Doc/* ../Doc/SPQR +cd .. + +cd RBio + cd Lib + %make_build CFLAGS="$RPM_OPT_FLAGS" + cd .. + cd ../Lib + gcc -shared %{?__global_ldflags} -Wl,-soname,librbio.so.2 -o \ + librbio.so.2.2.1 ../RBio/Lib/*.o libsuitesparseconfig.so.4 + ln -sf librbio.so.2.2.1 librbio.so.2 + ln -sf librbio.so.2.2.1 librbio.so + install -D ../RBio/Lib/*.a ./ + cd ../RBio + install -D Include/*.h ../Include + install -D README.txt Doc/ChangeLog Doc/License.txt ../Doc/RBio +cd .. + +%install +install -d ${RPM_BUILD_ROOT}%{_libdir} +install -d ${RPM_BUILD_ROOT}%{_includedir}/%{name} +cd Lib + for f in *.a *.so*; do + cp -a $f ${RPM_BUILD_ROOT}%{_libdir}/$f + done +cd .. +chmod 755 ${RPM_BUILD_ROOT}%{_libdir}/*.so.* +cd Include + for f in *.h *.hpp; do + cp -a $f ${RPM_BUILD_ROOT}%{_includedir}/%{name}/$f + done +cd .. +rm -rf Licenses +install -d Licenses +find */ -iname lesser.txt -o -iname license.txt -o -iname gpl.txt -o -iname license | while read f + do + b="${f%%/*}";r="${f#$b}";x="$(echo "$r" | sed 's|/doc/|/|gi')" + install -m0644 -D "$f" "./Licenses/$b/$x" + done +hardlink -cv Docs/ Licenses/ + +%check +TESTDIRS="AMD CAMD CCOLAMD CHOLMOD COLAMD KLU LDL SPQR RBio UMFPACK CXSparse" +for d in $TESTDIRS ; do + make -C $d/Demo CFLAGS="$RPM_OPT_FLAGS" LAPACK="" SPQR_CONFIG=-DHAVE_TBB TBB=-ltbb +done + +%files +%doc Licenses +%{_libdir}/lib*.so.* + +%files devel +%{_includedir}/suitesparse +%{_libdir}/lib*.so +%{_libdir}/lib*.a + +%files help +%doc Doc/* + +%changelog +* Mon Dec 23 2019 gulining - 4.4.6-17 +- Pakcage init