omegatest: Add space before \ for consistency
[xapian.git] / xapian-maintainer-tools / git-tag-release
blob4d6240600e3e042be62110b8704a681ee8161b7c
1 #!/bin/sh
3 # Copyright (C) 2004,2005,2007,2008,2010,2012,2013,2014,2015,2016,2020 Olly Betts
5 # Permission is hereby granted, free of charge, to any person obtaining a copy
6 # of this software and associated documentation files (the "Software"), to
7 # deal in the Software without restriction, including without limitation the
8 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
9 # sell copies of the Software, and to permit persons to whom the Software is
10 # furnished to do so, subject to the following conditions:
12 # The above copyright notice and this permission notice shall be included in
13 # all copies or substantial portions of the Software.
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 # IN THE SOFTWARE.
23 set -e
25 BRANCH=RELEASE/1.4
27 RELEASE_WEB_BASE_URL=https://oligarchy.co.uk/xapian
28 RELEASE_WEB_BASE_DIR=/srv/www/oligarchy.co.uk/xapian
30 version=$1
32 # check parameter was passed and that it looks like a version
33 case $version in
34 [0-9].[0-9].[0-9]) ;;
35 [0-9].[0-9].[1-9][0-9]) ;;
37 echo "Syntax: $0 VERSION"
38 echo "e.g. $0 1.0.18"
39 exit 1
41 esac
43 # Check that we've not already done this version.
44 RELEASE_URL=$RELEASE_WEB_BASE_URL/$version/
45 RELEASE_DIR=$RELEASE_WEB_BASE_DIR/$version/
47 if [ "`git branch --color=never --contains|cut -d' ' -f2-`" != "$BRANCH" ] ; then
48 echo "Not on branch $BRANCH"
49 exit 1
52 # Avoid tagging a release with the wrong versions in the tarballs (as
53 # happened with 1.1.4).
54 bad=0
55 escaped_version=`echo "$version"|sed 's/\([^0-9]\)/\\\\\\1/g'`
56 for d in xapian-core xapian-bindings xapian-applications/omega ; do
57 grep '^\(AC_INIT(\|m4_define(\[project_version\],\).*\<'"$escaped_version"'\>' "$d/configure.ac" >/dev/null || {
58 echo "$d/configure.ac not version $version" 1>&2
59 bad=1
61 done
62 [ "$bad" = "0" ] || exit 1
64 head_output=`HEAD "$RELEASE_URL" 2>/dev/null||true`
65 case $head_output in
66 "404 "*) ;;
68 cat <<END
69 Version $version already has a download directory:
70 $ HEAD '$RELEASE_URL'
71 $head_output
72 END
73 exit 1
75 esac
77 echo "Setting up temporary source tree"
78 DIR=`mktemp -d TMP.make_dist.XXXXXXXXXX`
79 git clone . "$DIR"
80 mkdir "$DIR/BUILD"
81 # Ignore failure - there may be no cached tarballs.
82 ln BUILD/*.tar* "$DIR/BUILD" || true
83 cd "$DIR"
84 git clone ../swig
86 echo "Building release tarballs"
87 ./bootstrap --download-tools=always
88 ./configure
89 time make -sj8
90 time make -sj8 distcheck XAPIAN_CONFIG=`pwd`/xapian-core/xapian-config LD_LIBRARY_PATH=`pwd`/xapian-core/.libs
91 cd ..
93 RESULT=`mktemp -d "RESULT-$version-XXXXXXXXXX"`
94 echo "Signing tarballs"
95 find "$DIR" -name "xapian-*-$version.tar.*"|while read f ; do
96 # Retry signing until successful.
97 while ! gpg --detach-sign --armour "$f" ; do sleep 60 ; done
98 mv "$f" "$f.asc" "$RESULT"
99 done
101 echo "Deleting build tree"
102 rm -rf "$DIR"
104 echo "Tagging"
105 tag=v$version
106 if git tag -v "$tag" > /dev/null 2>&1 ; then
107 echo "Tag '$tag' exists"
108 else
109 echo "Tagging '$tag'"
110 git tag -s -m "Xapian $version release" "$tag" "$BRANCH"
113 echo "Copying to server"
114 chmod 755 "$RESULT"
115 scp -r "$RESULT" thyestes.tartarus.org:"$RELEASE_DIR"
117 echo "Adding to trac"
118 # Add the version to the list in trac, close old milestone, ensure new
119 # milestone exists, and create the ReleaseNotes and ReleaseOverview
120 # pages:
121 ssh thyestes.tartarus.org bin/xapian-trac-new-release "$version"
123 checksums=`cd "$RESULT" && sha256sum *.tar.*|grep -v '\.asc$'`
124 echo "Checksums:"
125 echo "$checksums"
127 cat <<END > tmp.msg
128 From: Olly Betts <olly@survex.com>
129 To: xapian-discuss@lists.xapian.org
130 Subject: Xapian $version released
131 Reply-To: xapian-discuss@lists.xapian.org
132 Content-Type: multipart/signed; micalg=pgp-sha512;
133 protocol="application/pgp-signature"; boundary="=-=-=-=-=-=-=--"
134 Content-Disposition: inline
136 --=-=-=-=-=-=-=--
137 Content-Type: text/plain; charset=utf-8
138 Content-Disposition: inline
139 Content-Transfer-Encoding: 8bit
141 Xapian $version can now be downloaded from:
143 https://xapian.org/download
145 This release is mainly composed of
146 optimisations,
147 FIXME
149 bug fixes.
151 The wiki has the usual summary of the most notable changes:
153 https://trac.xapian.org/wiki/ReleaseOverview/$version
155 A big thanks to
156 FIXME
157 for helping to make this release a reality.
159 If I've missed anyone out, you can claim an extra big thankyou.
161 As always, if you encounter problems, please report them here, or to
162 the bug-tracker: https://xapian.org/bugs
164 You can find detached GPG signatures for each of the release tarballs
165 in a corresponding file with ".asc" appended.
167 Here are the SHA256 checksums of the released files:
169 $checksums
171 Cheers,
172 Olly
174 --=-=-=-=-=-=-=--
175 Content-Type: application/pgp-signature; name="signature.asc"
177 -----BEGIN PGP SIGNATURE-----
178 -----END PGP SIGNATURE-----
180 --=-=-=-=-=-=-=--
182 mutt -E -H tmp.msg