diff --git a/.gitignore b/.gitignore index e69de29..b6a9f0a 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +/ceres-solver-*.tar.gz +/ceres-solver.spec diff --git a/ceres-solver.spec b/ceres-solver.spec new file mode 100644 index 0000000..18e3756 --- /dev/null +++ b/ceres-solver.spec @@ -0,0 +1,311 @@ +Name: ceres-solver +Version: 1.14.0 +# Release candidate versions are messy. Give them a release of +# e.g. "0.1.0%{?dist}" for RC1 (and remember to adjust the Source0 +# URL). Non-RC releases go back to incrementing integers starting at 1. +Release: 7%{?dist} +Summary: A non-linear least squares minimizer + +License: BSD + +URL: http://ceres-solver.org/ +Source0: http://%{name}.org/%{name}-%{version}.tar.gz +# Partial backport of bbe790e0f3ba9e9565862067198d2760ab669ec8: fix possible out of bounds array access +Patch2: ceres-solver_bounds.patch + +%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 +%global blaslib flexiblas +%else +%global blaslib openblas +%endif + +%if 0%{?rhel} > 0 && 0%{?rhel} < 7 +# Exclude ppc64 because suitesparse is not available on ppc64 +# https://lists.fedoraproject.org/pipermail/epel-devel/2015-May/011193.html +ExcludeArch: ppc64 +%endif + +%if (0%{?rhel} && 0%{?rhel} <= 7) +BuildRequires: cmake3 >= 2.8.0 +%else +BuildRequires: cmake >= 2.8.0 +%endif +BuildRequires: gcc-c++ +BuildRequires: make + +# Need -static package per guidelines for handling dependencies on header-only +# libraries. +# http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Header_Only_Libraries +BuildRequires: eigen3-static >= 3.2.1 + +# suitesparse < 3.4.0-9 ships without *.hpp C++ headers +# https://bugzilla.redhat.com/show_bug.cgi?id=1001869 +BuildRequires: suitesparse-devel >= 3.4.0-9 + +# If the suitesparse package was built with TBB then we need TBB too +BuildRequires: tbb-devel + +# Use FlexiBLAS or OpenBLAS for BLAS +BuildRequires: %{blaslib}-devel +BuildRequires: gflags-devel >= 2.2.1 +# Build against miniglog on RHEL6 until glog package is added to EPEL6 +%if (0%{?rhel} != 06) +BuildRequires: glog-devel >= 0.3.1 +%endif + +%description + +Ceres Solver is an open source C++ library for modeling and solving +large, complicated optimization problems. It is a feature rich, mature +and performant library which has been used in production at Google +since 2010. Notable use of Ceres Solver is for the image alignment in +Google Maps and for vehicle pose in Google Street View. Ceres Solver +can solve two kinds of problems. + + 1. Non-linear Least Squares problems with bounds constraints. + 2. General unconstrained optimization problems. + +Features include: + + - A friendly API: build your objective function one term at a time + - Automatic and numeric differentiation + - Robust loss functions + - Local parameterizations + - Threaded Jacobian evaluators and linear solvers + - Trust region solvers with non-monotonic steps (Levenberg-Marquardt and + Dogleg (Powell & Subspace)) + - Line search solvers (L-BFGS and Nonlinear CG) + - Dense QR and Cholesky factorization (using Eigen) for small problems + - Sparse Cholesky factorization (using SuiteSparse) for large sparse problems + - Specialized solvers for bundle adjustment problems in computer vision + - Iterative linear solvers for general sparse and bundle adjustment problems + - Runs on Linux, Windows, Mac OS X, Android, and iOS + + +%package devel +Summary: A non-linear least squares minimizer +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: eigen3-devel +Requires: gflags-devel +Requires: glog-devel + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%autosetup -p1 + +%build +%cmake \ + -DCXSPARSE_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ + -DBLAS_LIBRARIES=-l%{blaslib} \ + -DGFLAGS_INCLUDE_DIR=%{_includedir} +%cmake_build + + +%install +%cmake_install + + +%check +CTEST_OUTPUT_ON_FAILURE=1 %ctest + + +%ldconfig_scriptlets + + +%files +%if (0%{?rhel} == 06) +%doc README.md LICENSE +%else +%doc README.md +%license LICENSE +%endif +%{_libdir}/*.so.* + +%files devel +%{_includedir}/* +%{_libdir}/*.so +%{_libdir}/cmake/Ceres + + +%changelog +* Mon Oct 5 16:11:58 CEST 2020 Sandro Mani - 1.14.0-7 +- Rebuild (eigen3) + +* Thu Aug 27 2020 Iñaki Úcar - 1.14.0-6 +- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager + +* Tue Jul 28 2020 Scott K Logan - 1.14.0-5 +- Drop lapack-devel now that FindLAPACK supports BLAS correctly +- Drop BLAS_LIBRARIES var when not using ATLAS + +* Mon Jul 27 2020 Fedora Release Engineering - 1.14.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Mar 11 2020 Scott K Logan - 1.14.0-3 +- Add lapack-devel build dependency so that SuiteSparse builds +- Add missing gflags-devel dependency to -devel subpackage + +* Tue Jan 28 2020 Fedora Release Engineering - 1.14.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Nov 13 2019 Sandro Mani - 1.14.0-1 +- Update to 1.14.0 +- Switch to openblas where possible (#1618941) + +* Wed Jul 24 2019 Fedora Release Engineering - 1.13.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 1.13.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 26 2018 Sandro Mani - 1.13.0-10 +- Rebuild (eigen3) + +* Mon Dec 10 2018 Sandro Mani - 1.13.0-9 +- Rebuild (eigen3) + +* Sat Oct 13 2018 Jerry James - 1.13.0-8 +- Rebuild for tbb 2019_U1 + +* Sat Oct 06 2018 Sérgio Basto - 1.13.0-7 +- Rebuit for gflags-2.2.1 and remove ceres-solver_gflags.patch + +* Tue Jul 31 2018 Florian Weimer - 1.13.0-6 +- Rebuild with fixed binutils + +* Sat Jul 28 2018 Sandro Mani - 1.13.0-5 +- Rebuild (eigen3) +- Backport patch to fix test failure + +* Thu Jul 12 2018 Fedora Release Engineering - 1.13.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Feb 18 2018 Sandro Mani - 1.13.0-3 +- Add missing BR: gcc-c++, make + +* Wed Feb 07 2018 Fedora Release Engineering - 1.13.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Aug 07 2017 Rich Mattes - 1.13.0-1 +- Update to release 1.13.0 (rhbz#1470895) + +* Sun Aug 06 2017 Björn Esser - 1.12.0-8 +- Rebuilt for AutoReq cmake-filesystem + +* Wed Aug 02 2017 Fedora Release Engineering - 1.12.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.12.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 15 2017 Fedora Release Engineering - 1.12.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Wed Feb 22 2017 Sandro Mani - 1.12.0-4 +- Rebuild for eigen3-3.3.3 + +* Fri Feb 10 2017 Fedora Release Engineering - 1.12.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun Jan 22 2017 Sandro Mani - 1.12.0-2 +- Rebuild for eigen3-3.3.2 + +* Wed Dec 28 2016 Rich Mattes - 1.12.0-1 +- Update to 1.12.0 (rhbz#1385268) + +* Tue Oct 04 2016 Sandro Mani - 1.11.0-9 +- Rebuild for eigen3-3.2.10 + +* Thu Sep 22 2016 Jerry James - 1.11.0-8 +- Rebuild for tbb 2017 +- tbb is available on all arches in Fedora and RHEL > 6 + +* Tue Jul 19 2016 Sandro Mani - 1.11.0-7 +- Rebuild for eigen3-3.2.9 + +* Tue Mar 01 2016 Rich Mattes - 1.11.0-6 +- Rebuild for eigen3-3.2.8 (rhbz#1288505) + +* Sun Feb 14 2016 Rich Mattes - 1.11.0-5 +- Remove -Werror from package CMAKE_CXX_CFLAGS + +* Wed Feb 03 2016 Fedora Release Engineering - 1.11.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 25 2016 Rich Mattes - 1.11.0-4 +- Add missing Requires to devel sub-package (rhbz#1300055) +- Move CeresConfig.cmake to arch-dependent path + +* Fri Jan 15 2016 Jerry James - 1.11.0-3 +- Rebuild for tbb 4.4u2 + +* Sat Dec 05 2015 Rich Mattes - 1.11.0-2 +- Rebuild for eigen 3.2.7 + +* Mon Oct 12 2015 Rich Mattes - 1.11.0-1 +- Update to release 1.11.0 + +* Fri Jul 10 2015 Taylor Braun-Jones - 1.10.0-8 +- Increase epsilon tolerance for one unit test. Needed for new gcc-5 changes. + +* Wed Jun 17 2015 Fedora Release Engineering - 1.10.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jun 11 2015 Nils Philippsen - 1.10.0-6 +- rebuild for suitesparse-4.4.4 + +* Sat May 9 2015 Taylor Braun-Jones - 1.10.0-5 +- Exclude ppc64 + +* Sat May 02 2015 Kalev Lember - 1.10.0-4 +- Rebuilt for GCC 5 C++11 ABI change + +* Fri Apr 3 2015 Taylor Braun-Jones - 1.10.0-3 +- Add upstream patch to fix failing unit test small_blas_test. + +* Thu Mar 12 2015 Taylor Braun-Jones - 1.10.0-3 +- Incorporate package review suggestions from Alex Stewart, Christopher Meng, + and Rich Mattes. + +* Wed Mar 11 2015 Taylor Braun-Jones - 1.10.0-2 +- Address comments from Rich Mattes' package review. + +* Mon Jan 12 2015 Taylor Braun-Jones - 1.10.0-1 +- Bump version and merge .spec updates from latest upstream release. + +* Wed Nov 13 2013 Taylor Braun-Jones - 1.8.0-1 +- New upstream release. + +* Mon Nov 04 2013 Taylor Braun-Jones - 1.8.0-0.1.0 +- New upstream release candidate. + +* Wed Sep 04 2013 Taylor Braun-Jones - 1.7.0-1 +- Bump version + +* Thu Aug 29 2013 Taylor Braun-Jones - 1.7.0-0.3.0 +- Bump version + +* Mon Aug 26 2013 Sameer Agarwal - 1.7.0-0.2.0 +- Bump version + +* Thu Jul 18 2013 Sameer Agarwal - 1.7.0-0.1.0 +- Bump version + +* Mon Apr 29 2013 Sameer Agarwal - 1.6.0-1 +- Bump version + +* Mon Apr 29 2013 Sameer Agarwal - 1.6.0-0.2.0 +- Bump version + +* Mon Apr 29 2013 Sameer Agarwal - 1.6.0-0.1.0 +- Bump version + +* Sun Feb 24 2013 Taylor Braun-Jones - 1.5.0-0.1.0 +- Bump version. + +* Sun Oct 14 2012 Taylor Braun-Jones - 1.4.0-0 +- Initial creation diff --git a/ceres-solver_bounds.patch b/ceres-solver_bounds.patch new file mode 100644 index 0000000..12e1e18 --- /dev/null +++ b/ceres-solver_bounds.patch @@ -0,0 +1,15 @@ +diff -rupN --no-dereference ceres-solver-1.14.0/internal/ceres/compressed_row_sparse_matrix.cc ceres-solver-1.14.0-new/internal/ceres/compressed_row_sparse_matrix.cc +--- ceres-solver-1.14.0/internal/ceres/compressed_row_sparse_matrix.cc 2018-03-23 15:44:36.000000000 +0100 ++++ ceres-solver-1.14.0-new/internal/ceres/compressed_row_sparse_matrix.cc 2019-11-13 12:18:47.049980244 +0100 +@@ -196,6 +196,11 @@ CompressedRowSparseMatrix* CompressedRow + CompressedRowSparseMatrix* output = + new CompressedRowSparseMatrix(num_rows, num_cols, input.num_nonzeros()); + ++ if (num_rows == 0) { ++ // No data to copy. ++ return output; ++ } ++ + // Copy the contents of the cols and values array in the order given + // by index and count the number of entries in each row. + int* output_rows = output->mutable_rows(); diff --git a/sources b/sources new file mode 100644 index 0000000..6e50cb9 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (ceres-solver-1.14.0.tar.gz) = a2af9918d2730709361ec971431a2b22e6ca3ca440081be87fa52729ec43702020b021837bfe5a42a58db1ab89ea6aada11f2d1888da66bef614ec1f27ab30c6