aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/ceres-solver.spec30
-rw-r--r--scripts/make_docs.py97
2 files changed, 92 insertions, 35 deletions
diff --git a/scripts/ceres-solver.spec b/scripts/ceres-solver.spec
index b3b6f0f..1e5c7c0 100644
--- a/scripts/ceres-solver.spec
+++ b/scripts/ceres-solver.spec
@@ -1,15 +1,15 @@
Name: ceres-solver
-Version: 1.7.0
+Version: 1.9.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: 0.3.0%{?dist}
+Release: 0.2.0%{?dist}
Summary: A non-linear least squares minimizer
Group: Development/Libraries
License: BSD
-URL: http://code.google.com/p/ceres-solver/
-Source0: http://%{name}.googlecode.com/files/%{name}-%{version}rc3.tar.gz
+URL: http://ceres-solver.org/
+Source0: http://%{name}.org/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%if (0%{?rhel} == 06)
@@ -35,16 +35,17 @@ Ceres Solver is a portable C++ library that allows for modeling and solving
large complicated nonlinear least squares problems. Features include:
- A friendly API: build your objective function one term at a time
- - Automatic differentiation
+ - Automatic and numeric differentiation
- Robust loss functions
- Local parameterizations
- Threaded Jacobian evaluators and linear solvers
- - Levenberg-Marquardt and Dogleg (Powell & Subspace) 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 and Android. An iOS port is underway
+ - Runs on Linux, Windows, Mac OS X, Android, and iOS
Notable use of Ceres Solver is for the image alignment in Google Maps and for
vehicle pose in Google Street View.
@@ -110,6 +111,21 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Mon May 27 2014 Sameer Agarwal <sameeragarwal@google.com> - 1.9.0-0.2.0
+- Bump version
+
+* Fri May 16 2014 Sameer Agarwal <sameeragarwal@google.com> - 1.9.0-0.1.0
+- Bump version
+
+* Tue Nov 12 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.8.0-0.3.0
+- Bump version
+
+* Wed Nov 6 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.8.0-0.2.0
+- Bump version
+
+* Thu Oct 31 2013 Sameer Agarwal <sameeragarwal@google.com> - 1.8.0-0.1.0
+- Bump version
+
* Thu Aug 29 2013 Taylor Braun-Jones <taylor@braun-jones.org> - 1.7.0-0.3.0
- Bump version
diff --git a/scripts/make_docs.py b/scripts/make_docs.py
index efbbf88..f992d13 100644
--- a/scripts/make_docs.py
+++ b/scripts/make_docs.py
@@ -1,7 +1,8 @@
#!/usr/bin/python
+# encoding: utf-8
#
# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2013 Google Inc. All rights reserved.
+# Copyright 2014 Google Inc. All rights reserved.
# http://code.google.com/p/ceres-solver/
#
# Redistribution and use in source and binary forms, with or without
@@ -40,42 +41,82 @@ import sys
N = len(sys.argv)
if N < 3:
- print "make_docs.py src_root destination_root"
+ print 'make_docs.py src_root destination_root'
sys.exit(1)
-src_dir = sys.argv[1] + "/docs/source"
+src_dir = sys.argv[1] + '/docs/source'
build_root = sys.argv[2]
-cache_dir = build_root + "/doctrees"
-html_dir = build_root + "/html"
+cache_dir = build_root + '/doctrees'
+html_dir = build_root + '/html'
# Called from Command Line
if N == 3:
- sphinx_exe = "sphinx-build"
+ sphinx_exe = 'sphinx-build'
# Called from CMake (using the SPHINX_EXECUTABLE found)
elif N == 4:
sphinx_exe = sys.argv[3]
# Run Sphinx to build the documentation.
-os.system("%s -b html -d %s %s %s" %(sphinx_exe, cache_dir, src_dir, html_dir))
-
-input_pattern = """config=TeX-AMS-MML_HTMLorMML"></script>"""
-output_pattern = """config=TeX-AMS_HTML">
- MathJax.Hub.Config({
- "HTML-CSS": {
- availableFonts: ["TeX"]
- }
- });
-</script>"""
-
-# By default MathJax uses does not use TeX fonts. This simple search
-# and replace fixes that.
-for name in glob.glob("%s/*.html" % html_dir):
- print "Postprocessing: ", name
- fptr = open(name)
- out = fptr.read().replace(input_pattern, output_pattern)
- fptr.close()
-
- fptr = open(name, "w")
- fptr.write(out)
- fptr.close()
+os.system('%s -b html -d %s %s %s' %(sphinx_exe, cache_dir, src_dir, html_dir))
+
+replacements = [
+ # By default MathJax uses does not use TeX fonts. This simple search
+ # and replace fixes that.
+ ('''config=TeX-AMS-MML_HTMLorMML"></script>''',
+ '''config=TeX-AMS_HTML">
+ MathJax.Hub.Config({
+ "HTML-CSS": {
+ availableFonts: ["TeX"]
+ }
+ });
+ </script>'''),
+
+ # The title for the homepage is not ideal, so change it.
+ ('<title>Ceres Solver &mdash; Ceres Solver</title>',
+ '<title>Ceres Solver &mdash; A Nonlinear Least Squares Minimizer</title>')
+]
+
+# This is a nasty hack to strip the breadcrumb navigation. A better strategy is
+# to fork the upstream template, but that is no fun either. Whitespace matters!
+# This doesn't use regular expressions since the escaping makes it untenable.
+breadcrumb_start_other = \
+'''<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> &raquo;</li>
+
+ <li>'''
+
+# The index page has a slightly different breadcrumb.
+breadcrumb_start_index = breadcrumb_start_other.replace('index.html', '#')
+
+breadcrumb_end = \
+'''</li>
+ <li class="wy-breadcrumbs-aside">
+
+ </li>
+ </ul>
+ <hr/>
+</div>'''
+
+for name in glob.glob('%s/*.html' % html_dir):
+ print 'Postprocessing: ', name
+ with open(name) as fptr:
+ out = fptr.read()
+
+ for input_pattern, output_pattern in replacements:
+ out = out.replace(input_pattern, output_pattern)
+
+ try:
+ breadcrumb_start = breadcrumb_start_index \
+ if name.endswith('index.html') \
+ else breadcrumb_start_other
+ pre_breadcrumb_start, post_breadcrumb_start = out.split(breadcrumb_start)
+ title, post_breadcrumb_end = post_breadcrumb_start.split(breadcrumb_end)
+ print 'Stripping breadcrumb for -', title
+ out = pre_breadcrumb_start + post_breadcrumb_end
+ except ValueError:
+ print 'Skipping breadcrumb strip for', name
+
+ with open(name, 'w') as fptr:
+ fptr.write(out)