Taylor Braun-Jones 86a8a50
Name:           ceres-solver
a5c91a7
Version:        1.14.0
Taylor Braun-Jones 86a8a50
# Release candidate versions are messy. Give them a release of
Taylor Braun-Jones 86a8a50
# e.g. "0.1.0%{?dist}" for RC1 (and remember to adjust the Source0
Taylor Braun-Jones 86a8a50
# URL). Non-RC releases go back to incrementing integers starting at 1.
ed8ea39
Release:        2%{?dist}
Taylor Braun-Jones 86a8a50
Summary:        A non-linear least squares minimizer
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
License:        BSD
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
URL:            http://ceres-solver.org/
9491015
Source0:        http://%{name}.org/%{name}-%{version}.tar.gz
a0c8d77
# Partial backport of bbe790e0f3ba9e9565862067198d2760ab669ec8: fix possible out of bounds array access
a0c8d77
Patch2:         ceres-solver_bounds.patch
a0c8d77
4858c17
%if 0%{?rhel} > 0 && 0%{?rhel} < 7
Taylor Braun-Jones 952b32a
# Exclude ppc64 because suitesparse is not available on ppc64
Taylor Braun-Jones 952b32a
# https://lists.fedoraproject.org/pipermail/epel-devel/2015-May/011193.html
Taylor Braun-Jones 952b32a
ExcludeArch: ppc64
4858c17
%endif
Taylor Braun-Jones 952b32a
e2351dc
%if (0%{?rhel} && 0%{?rhel} <= 7)
e2351dc
BuildRequires:  cmake3 >= 2.8.0
Taylor Braun-Jones 86a8a50
%else
Taylor Braun-Jones 86a8a50
BuildRequires:  cmake >= 2.8.0
Taylor Braun-Jones 86a8a50
%endif
13ec81f
BuildRequires:  gcc-c++
13ec81f
BuildRequires:  make
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
# Need -static package per guidelines for handling dependencies on header-only
Taylor Braun-Jones 86a8a50
# libraries.
Taylor Braun-Jones 86a8a50
# http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Header_Only_Libraries
Taylor Braun-Jones 86a8a50
BuildRequires:  eigen3-static >= 3.2.1
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
# suitesparse < 3.4.0-9 ships without *.hpp C++ headers
Taylor Braun-Jones 86a8a50
# https://bugzilla.redhat.com/show_bug.cgi?id=1001869
Taylor Braun-Jones 86a8a50
BuildRequires:  suitesparse-devel >= 3.4.0-9
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
# If the suitesparse package was built with TBB then we need TBB too
Taylor Braun-Jones 86a8a50
BuildRequires:  tbb-devel
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
# Use atlas for BLAS and LAPACK
a5c91a7
BuildRequires:  openblas-srpm-macros
a5c91a7
%ifarch %{openblas_arches}
a5c91a7
BuildRequires:  openblas-devel
a5c91a7
%else
Taylor Braun-Jones 86a8a50
BuildRequires:  atlas-devel
a5c91a7
%endif
8fb70db
BuildRequires:  gflags-devel >= 2.2.1
Taylor Braun-Jones 86a8a50
# Build against miniglog on RHEL6 until glog package is added to EPEL6
Taylor Braun-Jones 86a8a50
%if (0%{?rhel} != 06)
Taylor Braun-Jones 86a8a50
BuildRequires:  glog-devel >= 0.3.1
Taylor Braun-Jones 86a8a50
%endif
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%description
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Ceres Solver is an open source C++ library for modeling and solving
Taylor Braun-Jones 86a8a50
large, complicated optimization problems. It is a feature rich, mature
Taylor Braun-Jones 86a8a50
and performant library which has been used in production at Google
Taylor Braun-Jones 86a8a50
since 2010. Notable use of Ceres Solver is for the image alignment in
Taylor Braun-Jones 86a8a50
Google Maps and for vehicle pose in Google Street View. Ceres Solver
Taylor Braun-Jones 86a8a50
can solve two kinds of problems.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
  1. Non-linear Least Squares problems with bounds constraints.
Taylor Braun-Jones 86a8a50
  2. General unconstrained optimization problems.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Features include:
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
  - A friendly API: build your objective function one term at a time
Taylor Braun-Jones 86a8a50
  - Automatic and numeric differentiation
Taylor Braun-Jones 86a8a50
  - Robust loss functions
Taylor Braun-Jones 86a8a50
  - Local parameterizations
Taylor Braun-Jones 86a8a50
  - Threaded Jacobian evaluators and linear solvers
Taylor Braun-Jones 86a8a50
  - Trust region solvers with non-monotonic steps (Levenberg-Marquardt and
Taylor Braun-Jones 86a8a50
    Dogleg (Powell & Subspace))
Taylor Braun-Jones 86a8a50
  - Line search solvers (L-BFGS and Nonlinear CG)
Taylor Braun-Jones 86a8a50
  - Dense QR and Cholesky factorization (using Eigen) for small problems
Taylor Braun-Jones 86a8a50
  - Sparse Cholesky factorization (using SuiteSparse) for large sparse problems
Taylor Braun-Jones 86a8a50
  - Specialized solvers for bundle adjustment problems in computer vision
Taylor Braun-Jones 86a8a50
  - Iterative linear solvers for general sparse and bundle adjustment problems
Taylor Braun-Jones 86a8a50
  - Runs on Linux, Windows, Mac OS X, Android, and iOS
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%package        devel
Taylor Braun-Jones 86a8a50
Summary:        A non-linear least squares minimizer
Taylor Braun-Jones 86a8a50
Requires:       %{name}%{?_isa} = %{version}-%{release}
b5ebeb4
Requires:       eigen3-devel
b5ebeb4
Requires:       glog-devel
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%description    devel
Taylor Braun-Jones 86a8a50
The %{name}-devel package contains libraries and header files for
Taylor Braun-Jones 86a8a50
developing applications that use %{name}.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%prep
Taylor Braun-Jones 86a8a50
%setup -q
a0c8d77
%patch2 -p1
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%build
Taylor Braun-Jones 86a8a50
mkdir build
Taylor Braun-Jones 86a8a50
pushd build
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%if (0%{?rhel} == 06)
Taylor Braun-Jones 86a8a50
%{cmake28} .. -DMINIGLOG:BOOL=ON \
Taylor Braun-Jones 86a8a50
%else
Taylor Braun-Jones 86a8a50
%{cmake} .. \
Taylor Braun-Jones 86a8a50
%endif
Taylor Braun-Jones 86a8a50
  -DCXSPARSE_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \
5654597
  -DBLAS_LIBRARIES:PATH=%{_libdir}/atlas/libsatlas.so \
5654597
  -DGFLAGS_INCLUDE_DIR=%{_includedir}
Taylor Braun-Jones 86a8a50
make %{?_smp_mflags}
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%install
Taylor Braun-Jones 86a8a50
make -C build install DESTDIR=$RPM_BUILD_ROOT
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%check
Taylor Braun-Jones 86a8a50
CTEST_OUTPUT_ON_FAILURE=1 make -C build test
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
7c4ff26
%ldconfig_scriptlets
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%files
Taylor Braun-Jones 86a8a50
%if (0%{?rhel} == 06)
889dae7
%doc README.md LICENSE
Taylor Braun-Jones 86a8a50
%else
889dae7
%doc README.md
Taylor Braun-Jones 86a8a50
%license LICENSE
Taylor Braun-Jones 86a8a50
%endif
Taylor Braun-Jones 86a8a50
%{_libdir}/*.so.*
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%files devel
Taylor Braun-Jones 86a8a50
%{_includedir}/*
Taylor Braun-Jones 86a8a50
%{_libdir}/*.so
e2351dc
%{_libdir}/cmake/Ceres
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%changelog
ed8ea39
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-2
ed8ea39
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
ed8ea39
a5c91a7
* Wed Nov 13 2019 Sandro Mani <manisandro@gmail.com> - 1.14.0-1
a5c91a7
- Update to 1.14.0
a5c91a7
- Switch to openblas where possible (#1618941)
a5c91a7
ec6b420
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-12
ec6b420
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
ec6b420
7c1b694
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-11
7c1b694
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
7c1b694
95e95c1
* Wed Dec 26 2018 Sandro Mani <manisandro@gmail.com> - 1.13.0-10
95e95c1
- Rebuild (eigen3)
95e95c1
d60a528
* Mon Dec 10 2018 Sandro Mani <manisandro@gmail.com> - 1.13.0-9
d60a528
- Rebuild (eigen3)
d60a528
45327b4
* Sat Oct 13 2018 Jerry James <loganjerry@gmail.com> - 1.13.0-8
45327b4
- Rebuild for tbb 2019_U1
45327b4
8fb70db
* Sat Oct 06 2018 Sérgio Basto <sergio@serjux.com> - 1.13.0-7
8fb70db
- Rebuit for gflags-2.2.1 and remove ceres-solver_gflags.patch
8fb70db
23960b7
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 1.13.0-6
23960b7
- Rebuild with fixed binutils
23960b7
a0c8d77
* Sat Jul 28 2018 Sandro Mani <manisandro@gmail.com> - 1.13.0-5
a0c8d77
- Rebuild (eigen3)
a0c8d77
- Backport patch to fix test failure
a0c8d77
e7b07d9
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-4
e7b07d9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
e7b07d9
13ec81f
* Sun Feb 18 2018 Sandro Mani <manisandro@gmail.com> - 1.13.0-3
13ec81f
- Add missing BR: gcc-c++, make
13ec81f
9a4c964
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-2
9a4c964
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
9a4c964
f71d467
* Mon Aug 07 2017 Rich Mattes <richmattes@gmail.com> - 1.13.0-1
f71d467
- Update to release 1.13.0 (rhbz#1470895)
f71d467
e2351dc
* Sun Aug 06 2017 Björn Esser <besser82@fedoraproject.org> - 1.12.0-8
e2351dc
- Rebuilt for AutoReq cmake-filesystem
e2351dc
d34b0a6
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-7
d34b0a6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
d34b0a6
e2d6914
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-6
e2d6914
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
e2d6914
0126bd2
* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.12.0-5
0126bd2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
0126bd2
d6392e7
* Wed Feb 22 2017 Sandro Mani <manisandro@gmail.com> - 1.12.0-4
d6392e7
- Rebuild for eigen3-3.3.3
d6392e7
91bb1a2
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-3
91bb1a2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
91bb1a2
133d0da
* Sun Jan 22 2017 Sandro Mani <manisandro@gmail.com> - 1.12.0-2
133d0da
- Rebuild for eigen3-3.3.2
133d0da
29e77f5
* Wed Dec 28 2016 Rich Mattes <richmattes@gmail.com> - 1.12.0-1
29e77f5
- Update to 1.12.0 (rhbz#1385268)
29e77f5
dea59a8
* Tue Oct 04 2016 Sandro Mani <manisandro@gmail.com> - 1.11.0-9
dea59a8
- Rebuild for eigen3-3.2.10
dea59a8
4858c17
* Thu Sep 22 2016 Jerry James <loganjerry@gmail.com> - 1.11.0-8
4858c17
- Rebuild for tbb 2017
4858c17
- tbb is available on all arches in Fedora and RHEL > 6
4858c17
90c6c73
* Tue Jul 19 2016 Sandro Mani <manisandro@gmail.com> - 1.11.0-7
90c6c73
- Rebuild for eigen3-3.2.9
90c6c73
2d0c1d8
* Tue Mar 01 2016 Rich Mattes <richmattes@gmail.com> - 1.11.0-6
2d0c1d8
- Rebuild for eigen3-3.2.8 (rhbz#1288505)
2d0c1d8
4e1950d
* Sun Feb 14 2016 Rich Mattes <richmattes@gmail.com> - 1.11.0-5
4e1950d
- Remove -Werror from package CMAKE_CXX_CFLAGS
4e1950d
c3145f5
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.0-5
c3145f5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
c3145f5
b5ebeb4
* Mon Jan 25 2016 Rich Mattes <richmattes@gmail.com> - 1.11.0-4
b5ebeb4
- Add missing Requires to devel sub-package (rhbz#1300055)
b5ebeb4
- Move CeresConfig.cmake to arch-dependent path
b5ebeb4
ca63da3
* Fri Jan 15 2016 Jerry James <loganjerry@gmail.com> - 1.11.0-3
ca63da3
- Rebuild for tbb 4.4u2
ca63da3
05e6af0
* Sat Dec 05 2015 Rich Mattes <richmattes@gmail.com> - 1.11.0-2
05e6af0
- Rebuild for eigen 3.2.7
05e6af0
9491015
* Mon Oct 12 2015 Rich Mattes <richmattes@gmail.com> - 1.11.0-1
9491015
- Update to release 1.11.0
9491015
Taylor Braun-Jones 84c4351
* Fri Jul 10 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-8
Taylor Braun-Jones 84c4351
- Increase epsilon tolerance for one unit test. Needed for new gcc-5 changes.
Taylor Braun-Jones 84c4351
53dec03
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10.0-7
53dec03
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
53dec03
8a56b10
* Thu Jun 11 2015 Nils Philippsen <nils@redhat.com> - 1.10.0-6
8a56b10
- rebuild for suitesparse-4.4.4
8a56b10
Taylor Braun-Jones 952b32a
* Sat May  9 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-5
Taylor Braun-Jones 952b32a
- Exclude ppc64
Taylor Braun-Jones 952b32a
f9ac363
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 1.10.0-4
f9ac363
- Rebuilt for GCC 5 C++11 ABI change
f9ac363
Taylor Braun-Jones c05e954
* Fri Apr  3 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-3
Taylor Braun-Jones c05e954
- Add upstream patch to fix failing unit test small_blas_test.
Taylor Braun-Jones c05e954
Taylor Braun-Jones 86a8a50
* Thu Mar 12 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-3
Taylor Braun-Jones 86a8a50
- Incorporate package review suggestions from Alex Stewart, Christopher Meng,
Taylor Braun-Jones 86a8a50
  and Rich Mattes.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Wed Mar 11 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-2
Taylor Braun-Jones 86a8a50
- Address comments from Rich Mattes' package review.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Jan 12 2015 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.10.0-1
Taylor Braun-Jones 86a8a50
- Bump version and merge .spec updates from latest upstream release.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Wed Nov 13 2013 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.8.0-1
Taylor Braun-Jones 86a8a50
- New upstream release.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Nov 04 2013 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.8.0-0.1.0
Taylor Braun-Jones 86a8a50
- New upstream release candidate.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Wed Sep 04 2013 Taylor Braun-Jones <taylor.braun-jones@ge.com> - 1.7.0-1
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Thu Aug 29 2013 Taylor Braun-Jones <taylor@braun-jones.org> - 1.7.0-0.3.0
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Aug 26 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.7.0-0.2.0
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Thu Jul 18 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.7.0-0.1.0
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Apr 29 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.6.0-1
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Apr 29 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.6.0-0.2.0
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Mon Apr 29 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.6.0-0.1.0
Taylor Braun-Jones 86a8a50
- Bump version
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Sun Feb 24 2013 Taylor Braun-Jones <taylor@braun-jones.org> - 1.5.0-0.1.0
Taylor Braun-Jones 86a8a50
- Bump version.
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
* Sun Oct 14 2012 Taylor Braun-Jones <taylor@braun-jones.org> - 1.4.0-0
Taylor Braun-Jones 86a8a50
- Initial creation