From fbe053c03ae4465ff199bb462f9193110065a2bf Mon Sep 17 00:00:00 2001 From: Quentin Spencer Date: Thu, 26 Jul 2007 16:03:53 +0000 Subject: [PATCH] Added spec file and sources. Changelog shows differences from the last ufsparse release. --- .cvsignore | 1 + Makefile | 4 +- sources | 1 + suitesparse.spec | 351 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 355 insertions(+), 2 deletions(-) create mode 100644 suitesparse.spec diff --git a/.cvsignore b/.cvsignore index e69de29..5466f08 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +SuiteSparse-3.0.0.tar.gz diff --git a/Makefile b/Makefile index 8d9e401..28b413d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -# Makefile for source rpm: suitesparse +# Makefile for source rpm: ufsparse # $Id$ -NAME := suitesparse +NAME := ufsparse SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common diff --git a/sources b/sources index e69de29..88f8ffa 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +4eecd769cf236be413699b2984c39f97 SuiteSparse-3.0.0.tar.gz diff --git a/suitesparse.spec b/suitesparse.spec new file mode 100644 index 0000000..08115f1 --- /dev/null +++ b/suitesparse.spec @@ -0,0 +1,351 @@ +Name: suitesparse +Version: 3.0.0 +Release: 1%{?dist} +Summary: A collection of sparse matrix libraries + +Group: System Environment/Libraries +License: Distributable +URL: http://www.cise.ufl.edu/research/sparse/SuiteSparse +Source0: http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: blas-devel +Obsoletes: umfpack +Obsoletes: ufsparse <= 2.1.1 +Provides: ufsparse = %{version}-%{release} + +%description +ufsparse is a collection of libraries for computations involving sparse +matrices. 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 + UMFPACK sparse LU factorization + UFconfig configuration file for all the above packages. + + +%package devel +Summary: Development headers for SuiteSparse +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Obsoletes: umfpack-devel +Obsoletes: ufsparse-devel <= 2.1.1 +Provides: ufsparse-devel = %{version}-%{release} + +%description devel +The ufsparse-devel package contains files needed for developing +applications which use the suitesparse libraries. + + +%package static +Summary: Static version of SuiteSparse libraries +Group: Development/Libraries +Requires: %{name}-devel = %{version}-%{release} +Provides: ufsparse-static = %{version}-%{release} + +%description static +The ufsparse-static package contains the statically linkable version +of the suitesparse libraries. + + + +%prep +%setup -q -n SuiteSparse + +%build +%define amd_version 2.2 +%define amd_version_major 2 +%define btf_version 1.0 +%define btf_version_major 1 +%define camd_version 2.2 +%define camd_version_major 2 +%define ccolamd_version 2.7 +%define ccolamd_version_major 2 +%define cholmod_version 1.5 +%define cholmod_version_major 1 +%define colamd_version 2.7 +%define colamd_version_major 2 +%define csparse_version 2.2.0 +%define csparse_version_major 2 +%define cxsparse_version 2.2.0 +%define cxsparse_version_major 2 +%define klu_version 1.0 +%define klu_version_major 1 +%define ldl_version 2.0 +%define ldl_version_major 2 +%define umfpack_version 5.0.2 +%define umfpack_version_major 5 +### CHOLMOD can also be compiled to use the METIS library, but it is not +### used here because its licensing terms exclude it from Fedora Extras. +### To compile with METIS, define enable_metis as 1 below. +%define enable_metis 0 +### CXSparse is a superset of CSparse, and the two share common header +### names, so it does not make sense to build both. CXSparse is built +### by default, but CSparse can be built instead by defining +### enable_csparse as 1 below. +%define enable_csparse 0 + +mkdir Devel Devel/AMD Devel/CHOLMOD Devel/KLU Devel/LDL Devel/UMFPACK \ + Doc Doc/AMD Doc/BTF Doc/CAMD Doc/CCOLAMD Doc/CHOLMOD Doc/COLAMD \ + Doc/KLU Doc/LDL Doc/UMFPACK Lib Include + +pushd AMD + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libamd.so.%{amd_version_major} -o ../Lib/libamd.so.%{amd_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/License Doc/ChangeLog ../Doc/AMD + cp Doc/*.pdf ../Devel/AMD +popd + +pushd BTF + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libbtf.so.%{btf_version_major} -o libbtf.so.%{btf_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/* ../Doc/BTF +popd + +pushd CAMD + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libcamd.so.%{camd_version_major} -o ../Lib/libcamd.so.%{camd_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/ChangeLog Doc/License ../Doc/CAMD + cp Doc/*.pdf ../Devel/CAMD +popd + +pushd CCOLAMD + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libccolamd.so.%{ccolamd_version_major} -o libccolamd.so.%{ccolamd_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/* ../Doc/CCOLAMD +popd +pushd Lib +popd + +%if "%{?enable_metis}" == "1" +CHOLMOD_FLAGS="$RPM_OPT_FLAGS -I%{_includedir}/metis -fPIC" +%else +CHOLMOD_FLAGS="$RPM_OPT_FLAGS -DNPARTITION -fPIC" +%endif +pushd CHOLMOD + pushd Lib + make CFLAGS="$CHOLMOD_FLAGS" + gcc -shared -Wl,-soname,libcholmod.so.%{cholmod_version_major} -o ../Lib/libcholmod.so.%{cholmod_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt ../Doc/CHOLMOD + cp Cholesky/License.txt ../Doc/CHOLMOD/Cholesky_License.txt + cp Core/License.txt ../Doc/CHOLMOD/Core_License.txt + cp MatrixOps/License.txt ../Doc/CHOLMOD/MatrixOps_License.txt + cp Partition/License.txt ../Doc/CHOLMOD/Partition_License.txt + cp Supernodal/License.txt ../Doc/CHOLMOD/Supernodal_License.txt + cp Doc/*.pdf ../Devel/CHOLMOD +popd + +pushd COLAMD + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libcolamd.so.%{colamd_version_major} -o libcolamd.so.%{colamd_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/* ../Doc/COLAMD +popd + +%if "%{?enable_csparse}" == "1" +pushd CSparse + pushd Source + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libcsparse.so.%{csparse_version_major} -o libcsparse.so.%{csparse_version} `ls *.o` + cp *.a *.so* ../../Lib + cp cs.h ../../Include + popd + mkdir ../Doc/CSparse/ + cp Doc/* ../Doc/CSparse +popd + +%else +pushd CXSparse + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libcxsparse.so.%{cxsparse_version_major} -o libcxsparse.so.%{cxsparse_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/cs.h ../Include + mkdir ../Doc/CXSparse/ + cp Doc/* ../Doc/CXSparse +popd +%endif + +pushd KLU + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libklu.so.%{klu_version_major} -o libklu.so.%{klu_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/lesser.txt ../Doc/KLU +popd + +pushd LDL + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libldl.so.%{ldl_version_major} -o libldl.so.%{ldl_version} `ls *.o` + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/ChangeLog Doc/lesser.txt ../Doc/LDL + cp Doc/*.pdf ../Devel/LDL +popd + +pushd UMFPACK + pushd Lib + make CFLAGS="$RPM_OPT_FLAGS -fPIC" + gcc -shared -Wl,-soname,libumfpack.so.%{umfpack_version_major} -o ../Lib/libumfpack.so.%{umfpack_version} `ls *.o` -lblas -lm + popd + cp Lib/*.a Lib/*.so* ../Lib + cp Include/*.h ../Include + cp README.txt Doc/License Doc/ChangeLog Doc/lesser.txt ../Doc/UMFPACK + cp Doc/*.pdf ../Devel/UMFPACK +popd + +pushd Lib + ln -sf libamd.so.%{amd_version} libamd.so.%{amd_version_major} + ln -sf libamd.so.%{amd_version} libamd.so + ln -sf libbtf.so.%{btf_version} libbtf.so.%{btf_version_major} + ln -sf libbtf.so.%{btf_version} libbtf.so + ln -sf libcamd.so.%{camd_version} libcamd.so.%{camd_version_major} + ln -sf libcamd.so.%{camd_version} libcamd.so + ln -sf libccolamd.so.%{ccolamd_version} libccolamd.so.%{ccolamd_version_major} + ln -sf libccolamd.so.%{ccolamd_version} libccolamd.so + ln -sf libcholmod.so.%{cholmod_version} libcholmod.so.%{cholmod_version_major} + ln -sf libcholmod.so.%{cholmod_version} libcholmod.so + ln -sf libcolamd.so.%{colamd_version} libcolamd.so.%{colamd_version_major} + ln -sf libcolamd.so.%{colamd_version} libcolamd.so +%if "%{?enable_csparse}" == "1" + ln -sf libcsparse.so.%{csparse_version} libcsparse.so.%{csparse_version_major} + ln -sf libcsparse.so.%{csparse_version} libcsparse.so +%else + ln -sf libcxsparse.so.%{cxsparse_version} libcxsparse.so.%{cxsparse_version_major} + ln -sf libcxsparse.so.%{cxsparse_version} libcxsparse.so +%endif + ln -sf libklu.so.%{klu_version} libklu.so.%{klu_version_major} + ln -sf libklu.so.%{klu_version} libklu.so + ln -sf libldl.so.%{ldl_version} libldl.so.%{ldl_version_major} + ln -sf libldl.so.%{ldl_version} libldl.so + ln -sf libumfpack.so.%{umfpack_version} libumfpack.so.%{umfpack_version_major} + ln -sf libumfpack.so.%{umfpack_version} libumfpack.so +popd + +cp UFconfig/UFconfig.h Include + +%install +rm -rf ${RPM_BUILD_ROOT} +mkdir -p ${RPM_BUILD_ROOT}%{_libdir} +mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{name} +pushd Lib + for f in *.a *.so*; do + cp -a $f ${RPM_BUILD_ROOT}%{_libdir}/$f + done +popd +pushd Include + for f in *.h; do + cp -a $f ${RPM_BUILD_ROOT}%{_includedir}/%{name}/$f + done +popd + + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%defattr(-,root,root) +%doc Doc/* +%{_libdir}/lib*.so.* + +%files devel +%defattr(-,root,root) +%doc Devel/* +%{_includedir}/%{name} +%{_libdir}/lib*.so + +%files static +%defattr(-,root,root) +%{_libdir}/lib*.a + +%changelog +* Tue Jul 3 2007 Quentin Spencer 3.0.0-1 +- Change package name to match upstream, including provides and obsoletes. +- New release. Numerous changes in build to reflect source reorganization. +- Moved static libs into separate package. + +* Mon Oct 16 2006 Quentin Spencer 2.1.1-1 +- New release, and package name change from UFsparse to SuiteSparse. Fixes + bug #210846. Keep the ufsparse package name for now. + +* Thu Sep 7 2006 Quentin Spencer 2.1.0-1 +- New release. Increment versions of some libraries. +- Rearrange and clean up spec file so all definitions are in one place. + +* Mon Aug 7 2006 Quentin Spencer 2.0.0-1 +- New release. +- Build newly added CAMD library. +- Misc minor spec changes. + +* Tue Mar 7 2006 Quentin Spencer 1.2-1 +- New release. +- Build newly added library CXSparse (but not CSparse--see comments + in build section). + +* Wed Feb 15 2006 Quentin Spencer 0.93-2 +- Rebuild for Fedora Extras 5. + +* Thu Feb 9 2006 Quentin Spencer 0.93-1 +- New release. Remove old patch. + +* Wed Dec 14 2005 Quentin Spencer 0.92-2 +- Add patch0--fixes LDL/Makefile so CFLAGS are used when compiling ldl.a. + +* Wed Dec 14 2005 Quentin Spencer 0.92-1 +- Update to Dec 8 2005 version. + +* Tue Oct 25 2005 Quentin Spencer 0.91-2 +- Rebuild. + +* Tue Oct 18 2005 Quentin Spencer 0.91-1 +- New upstream release, incorporating previous patches +- chmod the build directory to ensure all headers are world readable + +* Fri Oct 07 2005 Quentin Spencer 0.9-3 +- Build cholmod, but disable METIS using -DNPARTITION flag. + +* Sat Oct 01 2005 Quentin Spencer 0.9-2 +- Modify description, other modifications for import into FE. +- Add dist tag, cosmetic changes. + +* Tue Sep 08 2005 David Bateman 0.9-1 +- First version.