10ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong#!/bin/bash 20ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 30ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Ceres Solver - A fast non-linear least squares minimizer 40ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Copyright 2012 Google Inc. All rights reserved. 50ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# http://code.google.com/p/ceres-solver/ 60ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 70ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Redistribution and use in source and binary forms, with or without 80ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# modification, are permitted provided that the following conditions are met: 90ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 100ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# * Redistributions of source code must retain the above copyright notice, 110ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# this list of conditions and the following disclaimer. 120ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# * Redistributions in binary form must reproduce the above copyright notice, 130ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# this list of conditions and the following disclaimer in the documentation 140ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# and/or other materials provided with the distribution. 150ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# * Neither the name of Google Inc. nor the names of its contributors may be 160ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# used to endorse or promote products derived from this software without 170ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# specific prior written permission. 180ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 190ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 200ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 210ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 220ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 230ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 240ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 250ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 260ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 270ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 280ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 290ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# POSSIBILITY OF SUCH DAMAGE. 300ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 310ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Author: mierle@gmail.com (Keir Mierle) 320ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# 331d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling# Note: You will need Sphinx and Pygments installed for this to work. 340ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 350ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif [ -z $1 ] ; then 360ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo 'usage: scripts/make_release <version>' 370ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo ' must be run from toplevel Ceres source directory' 380ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong exit 1 390ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongfi 400ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 410ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongTMP="/tmp/ceres-solver-$1" 420ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongDOCS_TMP="/tmp/ceres-solver-docs-$1" 431d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha HaeberlingVERSION=$(grep 'SET(CERES_VERSION_' CMakeLists.txt | \ 441d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling sed -e 's/\(.*\) \(.*\))/\2/' | \ 451d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling tr '\n' '.' | sed -e 's/.$//') 460ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongABI_VERSION=$(grep 'SET(CERES_ABI_VERSION' CMakeLists.txt | \ 470ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sed -e 's/SET(CERES_ABI_VERSION //' | \ 480ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sed -e 's/)//') 490ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongVERSION_IN_HEADER=$(grep '#define CERES_VERSION' include/ceres/ceres.h | \ 500ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sed -e 's/#define CERES_VERSION //') 510ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongABI_VERSION_IN_HEADER=$(grep '#define CERES_ABI_VERSION' \ 520ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong include/ceres/ceres.h | \ 530ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sed -e 's/#define CERES_ABI_VERSION //') 541d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha HaeberlingVERSION_IN_SPEC=$(grep '^Version:' scripts/ceres-solver.spec | \ 551d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling sed -e 's/Version: *//') 560ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongGIT_COMMIT=$(git log -1 HEAD |grep commit) 570ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 580ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif [[ $1 != $VERSION ]] ; then 590ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo "ERROR: Version from the command line $1 does not match CERES_VERSION" 600ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " in CMakeLists.txt, which is $VERSION. You may not be in the " 610ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " toplevel source dir." 620ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong exit 1 630ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongfi 640ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 650ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif [[ $VERSION_IN_HEADER != $VERSION ]] ; then 660ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo "ERROR: CERES_VERSION version from include/ceres/ceres.h, which is" 670ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " $VERSION_IN_HEADER, does not match the ABI version" 680ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " from the toplevel CMakeLists.txt, which is $ABI_VERSION." 690ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " You may not be in the toplevel source directory, or the" 700ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " versions are out of sync." 710ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong exit 1 720ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongfi 730ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 740ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif [[ $ABI_VERSION_IN_HEADER != $ABI_VERSION ]] ; then 750ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo "ERROR: CERES_ABI_VERSION from include/ceres/ceres.h, which is" 760ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " $ABI_VERSION_IN_HEADER, does not match the ABI version" 770ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " from the toplevel CMakeLists.txt, which is $ABI_VERSION." 780ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " You may not be in the toplevel source directory, or the" 790ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong echo " versions are out of sync." 800ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong exit 1 810ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongfi 820ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 831d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingif [[ $VERSION_IN_SPEC != $VERSION ]] ; then 841d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling echo "ERROR: Version string from scripts/ceres-solver.spec, which is" 851d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling echo " $VERSION_IN_SPEC, does not match the version" 861d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling echo " from the toplevel CMakeLists.txt, which is $ABI_VERSION." 871d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling echo " You may not be in the toplevel source directory, or the" 881d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling echo " versions are out of sync." 891d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling exit 1 901d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingfi 911d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 921d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling# Export repository. 931d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlinggit checkout-index -f -a --prefix=$TMP/ 940ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 950ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Build the VERSION file. 960ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus KongVERSIONFILE=$TMP/VERSION 970ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongecho "version $VERSION" >> $VERSIONFILE 980ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongecho "abi_version $VERSION" >> $VERSIONFILE 990ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongecho "$GIT_COMMIT" >> $VERSIONFILE 1000ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 1010ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Build the documentation. 1021d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingpython $TMP/scripts/make_docs.py $TMP $DOCS_TMP 1031d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingcp -pr $DOCS_TMP/html $TMP/docs 1040ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 1050ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Build the tarball. 1060ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongcd /tmp 1070ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongtar -cvzf "ceres-solver-$1.tar.gz" "ceres-solver-$1" 1080ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 1090ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Don't leave a mess behind. 1100ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongrm -rf $TMP 1111d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingrm -rf $DOCS_TMP 1120ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 1130ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Reminder to upload. 1141d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingcat <<EOF 1151d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 1161d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha HaeberlingTODO: 1171d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling - Upload /tmp/ceres-solver-$1.tar.gz 1181d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 1191d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling - Update the release string in scripts/ceres-solver.spec if this is a RC 1201d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling release or the first release after a RC release. 1211d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 1221d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling - Build and upload RPM package. 1231d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 1241d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha HaeberlingEOF 125