1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#!/bin/bash
22:�'æ��?҃{#
3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Ceres Solver - A fast non-linear least squares minimizer
4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Copyright 2012 Google Inc. All rights reserved.
5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# http://code.google.com/p/ceres-solver/
6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Redistribution and use in source and binary forms, with or without
8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# modification, are permitted provided that the following conditions are met:
9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# * Redistributions of source code must retain the above copyright notice,
11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#   this list of conditions and the following disclaimer.
12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# * Redistributions in binary form must reproduce the above copyright notice,
13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#   this list of conditions and the following disclaimer in the documentation
14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#   and/or other materials provided with the distribution.
15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# * Neither the name of Google Inc. nor the names of its contributors may be
16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#   used to endorse or promote products derived from this software without
17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#   specific prior written permission.
18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24Np��lGk/�x�Z@$z�# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25a��="iXP��%��gՂ��yO�[-���QE���xx�X(�,# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26j�r)�s�$I\I���O���ƕ;s����GV_����������<�P��# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29bN����# POSSIBILITY OF SUCH DAMAGE.
30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Author: mierle@gmail.com (Keir Mierle)
32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Note: You will need Sphinx and Pygments installed for this to work.
34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif [ -z $1 ] ; then
36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo 'usage: scripts/make_release <version>'
37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo '       must be run from toplevel Ceres source directory'
38x�f]�f��������?��ho�F�%�  exit 1
39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfi
40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
41Ev1�#u��IUTMP="/tmp/ceres-solver-$1"
426_�֚N���RjDOCS_TMP="/tmp/ceres-solver-docs-$1"
43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollVERSION=$(grep 'SET(CERES_VERSION_' CMakeLists.txt | \
44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll          sed -e 's/\(.*\) \(.*\))/\2/' | \
45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll          tr '\n' '.' | sed -e 's/.$//')
46eG;>���ns<]�Z�xRjABI_VERSION=$(grep 'SET(CERES_ABI_VERSION' CMakeLists.txt | \
47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll              sed -e 's/SET(CERES_ABI_VERSION //' | \
48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll              sed -e 's/)//')
49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollVERSION_IN_HEADER=$(grep '#define CERES_VERSION' include/ceres/ceres.h | \
50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll                    sed -e 's/#define CERES_VERSION //')
51vgMp�J^Ș�aBN�+�O'��#�#+�>꽼ABI_VERSION_IN_HEADER=$(grep '#define CERES_ABI_VERSION' \
52v����p                              include/ceres/ceres.h | \
53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll                        sed -e 's/#define CERES_ABI_VERSION //')
54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollVERSION_IN_SPEC=$(grep '^Version:' scripts/ceres-solver.spec | \
55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll                  sed -e 's/Version: *//')
566uz�a�;�g^�e�GIT_COMMIT=$(git log -1 HEAD |grep commit)
57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif [[ $1 != $VERSION ]] ; then
59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "ERROR: Version from the command line $1 does not match CERES_VERSION"
60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       in CMakeLists.txt, which is $VERSION. You may not be in the "
61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       toplevel source dir."
62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  exit 1
63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfi
64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif [[ $VERSION_IN_HEADER != $VERSION ]] ; then
66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "ERROR: CERES_VERSION version from include/ceres/ceres.h, which is"
67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       $VERSION_IN_HEADER, does not match the ABI version"
682��>q  echo "       from the toplevel CMakeLists.txt, which is $ABI_VERSION."
69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       You may not be in the toplevel source directory, or the"
70YG�𢮶��ET;r�(  echo "       versions are out of sync."
71Ts�#�f  exit 1
72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfi
73J*�B��@��+�K�=v����yE�vǷ��X��vc�*dQ�ĩ|!�Hd�?/��
74RD;~p�<���sif [[ $ABI_VERSION_IN_HEADER != $ABI_VERSION ]] ; then
75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "ERROR: CERES_ABI_VERSION from include/ceres/ceres.h, which is"
76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       $ABI_VERSION_IN_HEADER, does not match the ABI version"
77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       from the toplevel CMakeLists.txt, which is $ABI_VERSION."
78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       You may not be in the toplevel source directory, or the"
79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       versions are out of sync."
80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  exit 1
81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfi
82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
83s4dmqLQ칙��!V>Cif [[ $VERSION_IN_SPEC != $VERSION ]] ; then
84R��F�  echo "ERROR: Version string from scripts/ceres-solver.spec, which is"
85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       $VERSION_IN_SPEC, does not match the version"
86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       from the toplevel CMakeLists.txt, which is $ABI_VERSION."
87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       You may not be in the toplevel source directory, or the"
88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  echo "       versions are out of sync."
89I}��[�<>!ճ��t���o�D��'���˧a_��w�r�`������Q��  exit 1
90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfi
91c�j�L�z��]��p(�>s�v؝.���t�X����J���|�
92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Export repository.
93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollgit checkout-index -f -a --prefix=$TMP/
948l�XGv���ц!Fc�Ğ����kD��
95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Build the VERSION file.
96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollVERSIONFILE=$TMP/VERSION
97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollecho "version $VERSION" >> $VERSIONFILE
98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollecho "abi_version $VERSION" >> $VERSIONFILE
99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollecho "$GIT_COMMIT" >> $VERSIONFILE
100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Build the documentation.
102tt�<o��^j��^Z�ޭ�>+��*|�������{�ŗ%�/���python $TMP/scripts/make_docs.py $TMP $DOCS_TMP
103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollcp -pr $DOCS_TMP/html $TMP/docs
1049}Z�^
105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Build the tarball.
106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollcd /tmp
107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Molltar -cvzf "ceres-solver-$1.tar.gz" "ceres-solver-$1"
108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Don't leave a mess behind.
110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollrm -rf $TMP
111F�x<&"�b��_rm -rf $DOCS_TMP
1127xbݞG����
113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Reminder to upload.
114F*J�{�͢��y�Hocat <<EOF 
115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollTODO:
117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  - Upload /tmp/ceres-solver-$1.tar.gz
118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
1196m���	����E?  - Update the release string in scripts/ceres-solver.spec if this is a RC
120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    release or the first release after a RC release.
121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  - Build and upload RPM package.
123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollEOF
125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll