Taylor Braun-Jones 86a8a50
Name:           ceres-solver
889dae7
Version:        1.11.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.
ca63da3
Release:        3%{?dist}
Taylor Braun-Jones 86a8a50
Summary:        A non-linear least squares minimizer
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Group:          Development/Libraries
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
b5ebeb4
# Patch to install cmake configuration to libdir/cmake/Ceres instead of
b5ebeb4
# share/Ceres
b5ebeb4
# Not yet submitted upstream.
b5ebeb4
Patch0:         %{name}-1.11.0-cmakedir.patch
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
Taylor Braun-Jones 952b32a
Taylor Braun-Jones 86a8a50
%if (0%{?rhel} == 06)
Taylor Braun-Jones 86a8a50
BuildRequires:  cmake28 >= 2.8.0
Taylor Braun-Jones 86a8a50
%else
Taylor Braun-Jones 86a8a50
BuildRequires:  cmake >= 2.8.0
Taylor Braun-Jones 86a8a50
%endif
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
%ifnarch s390 s390x
Taylor Braun-Jones 86a8a50
BuildRequires:  tbb-devel
Taylor Braun-Jones 86a8a50
%endif
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
# Use atlas for BLAS and LAPACK
Taylor Braun-Jones 86a8a50
BuildRequires:  atlas-devel
Taylor Braun-Jones 86a8a50
BuildRequires:  gflags-devel
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
Group:          Development/Libraries
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
b5ebeb4
%patch0 -p1 -b .cmakedir
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 \
Taylor Braun-Jones 86a8a50
  -DBLAS_LIBRARIES:PATH=%{_libdir}/atlas/libsatlas.so
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
Taylor Braun-Jones 86a8a50
%post -p /sbin/ldconfig
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%postun -p /sbin/ldconfig
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
b5ebeb4
%dir %{_libdir}/cmake/Ceres
b5ebeb4
%{_libdir}/cmake/Ceres/*.cmake
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
Taylor Braun-Jones 86a8a50
%changelog
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