diff --git a/.ceres-solver.metadata b/.ceres-solver.metadata new file mode 100644 index 0000000..d2dbcc2 --- /dev/null +++ b/.ceres-solver.metadata @@ -0,0 +1 @@ +a38396bf89d2b44a441d9370011e8deaf962be58 SOURCES/ceres-solver-1.13.0.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0003b3d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/ceres-solver-1.13.0.tar.gz diff --git a/SOURCES/ceres-solver_bounds.patch b/SOURCES/ceres-solver_bounds.patch new file mode 100644 index 0000000..b31644f --- /dev/null +++ b/SOURCES/ceres-solver_bounds.patch @@ -0,0 +1,15 @@ +diff -rupN ceres-solver-1.13.0/internal/ceres/compressed_row_sparse_matrix.cc ceres-solver-1.13.0-new/internal/ceres/compressed_row_sparse_matrix.cc +--- ceres-solver-1.13.0/internal/ceres/compressed_row_sparse_matrix.cc 2017-08-03 09:10:55.000000000 +0200 ++++ ceres-solver-1.13.0-new/internal/ceres/compressed_row_sparse_matrix.cc 2018-07-28 22:31:51.989682309 +0200 +@@ -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/ceres-solver_gflags.patch b/SOURCES/ceres-solver_gflags.patch new file mode 100644 index 0000000..452c66f --- /dev/null +++ b/SOURCES/ceres-solver_gflags.patch @@ -0,0 +1,12 @@ +diff -rupN ceres-solver-1.11.0/cmake/FindGflags.cmake ceres-solver-1.11.0-new/cmake/FindGflags.cmake +--- ceres-solver-1.11.0/cmake/FindGflags.cmake 2015-10-11 22:57:44.000000000 +0200 ++++ ceres-solver-1.11.0-new/cmake/FindGflags.cmake 2016-07-25 14:45:21.720524347 +0200 +@@ -384,7 +384,7 @@ if (GFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_ + if (FOUND_INSTALLED_GFLAGS_CMAKE_CONFIGURATION) + message(STATUS "Detected gflags version: ${gflags_VERSION}") + set(GFLAGS_FOUND ${gflags_FOUND}) +- set(GFLAGS_INCLUDE_DIR ${gflags_INCLUDE_DIR}) ++ set(GFLAGS_INCLUDE_DIR "/usr/include") + set(GFLAGS_LIBRARY ${gflags_LIBRARIES}) + + # gflags does not export the namespace in their CMake configuration, so diff --git a/SPECS/ceres-solver.spec b/SPECS/ceres-solver.spec new file mode 100644 index 0000000..78491a0 --- /dev/null +++ b/SPECS/ceres-solver.spec @@ -0,0 +1,264 @@ +Name: ceres-solver +Version: 1.13.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: 2%{?dist} +Summary: A non-linear least squares minimizer + +Group: Development/Libraries +License: BSD + +URL: http://ceres-solver.org/ +Source0: http://%{name}.org/%{name}-%{version}.tar.gz +# Temporary workaround for bogus gflags-config.cmake, see #1359776 +Patch1: ceres-solver_gflags.patch +# Partial backport of bbe790e0f3ba9e9565862067198d2760ab669ec8: fix possible +# out of bounds array access +Patch2: ceres-solver_bounds.patch +%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 + +# 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 atlas for BLAS and LAPACK +BuildRequires: atlas-devel +BuildRequires: gflags-devel +# 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 +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: eigen3-devel +Requires: glog-devel + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 + +%build +mkdir build +pushd build + +%if (0%{?rhel} == 06) +%{cmake28} .. -DMINIGLOG:BOOL=ON \ +%else +%{cmake} .. \ +%endif + -DCXSPARSE_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ + -DBLAS_LIBRARIES:PATH=%{_libdir}/atlas/libsatlas.so \ + -DGFLAGS_INCLUDE_DIR=%{_includedir} +make %{?_smp_mflags} + + +%install +make -C build install DESTDIR=$RPM_BUILD_ROOT + + +%check +CTEST_OUTPUT_ON_FAILURE=1 make -C build test + + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%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 +* Thu Aug 02 2018 Jiri Kucera - 1.13.0-1 +- Backport patch to fix CompressedRowSparseMatrixTest.AppendRows test failure + (see https://github.com/ceres-solver/ceres-solver/issues/383) + Resolves: #1609969 + +* 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