chiark / gitweb /
RELEASE-CHECKLIST: Check that tarball is equal to git tree
[adns.git] / RELEASE-CHECKLIST
1 #!/bin/bash
2 # This is for the benefit of the upstream maintainers of GNU adns
3 #
4 #  * Maybe rerun autoconf
5 #  * Ensure changelog reflects changes
6 #  * Ensure NEWS reflects changes
7 #  * Maybe update MAJOR and/or MINOR in common.make.in
8 #  * Update DISTVERSION in Makefile.in
9 #  * Update ADNS_VERSION_STRING in client/client.h
10 #
11 #  * Run this script
12 #      ./RELEASE-CHECKLIST [--real] <version>
13 #
14 #  * On chiark, maybe, replace ~ian/public-html/adns/current
15 #    with symlink to web-$(version) (as directed by script)
16 #
17 #  * Send release announcement (use last one as template)
18 #
19 #  * Update DISTVERSION, ADNS_VERSION_STRING and start new changelog entry
20
21 set -e
22
23 fail () { echo >&2 "$0: $*"; exit 16; }
24
25 real=false
26 if [ "x$1" = x--real ]; then
27         real=true; shift
28 fi
29
30 if [ $# != 1 ]; then fail "wrong # arguments"; fi
31 wantversion="$1"
32
33 version=`sed -n <Makefile.in 's/^DISTVERSION=[  ]*//p'`
34
35 if [ "x$version" != "x$wantversion" ]; then
36         fail "you say version $wantversion but tree is $version"
37 fi
38
39 gpgkey='-u 0x48B50D39'
40 chiark=chiark:/u/ian/public-html/adns
41 chiarkftp=$chiark/ftp
42
43 x () { echo "----- $* -----"; "$@"; }
44 wx () { if $real; then x "$@"; else echo "WOULD: $*"; fi; }
45
46 x git clean -xdff
47 x ./configure
48 x make -j4
49 x make check
50 x make dist
51 rm -rf web
52 x make web-install
53
54 distdir=adns-$version
55 distfile=$distdir.tar.gz
56 x test -f $distfile
57
58 rm -rf dist_tmp
59 mkdir dist_tmp
60 cd dist_tmp
61 tar axf ../$distfile
62 cd $distdir
63 git init --quiet
64 git fetch --quiet ../.. HEAD
65 git add .
66 git commit --quiet -m T
67 git diff --exit-code FETCH_HEAD
68 cd ../..
69
70 tag=adns-${version//\~/-}
71 webout=docs-$version
72
73 wx gpg --detach-sign $distfile
74 wx git tag -s $gpgkey -m "adns release $version" $tag
75 wx git push origin $tag~0:master $tag
76
77 distfiles="$distfile $distfile.sig"
78 wx rsync -vP $distfiles $chiarkftp/
79
80 wx rsync -rvP web/. $chiark/$webout
81
82 wx sha256sum $distfiles
83
84 if ! $real; then echo "NOT REAL"; exit 0; fi
85
86 cat <<END
87
88 TO UPDATE WEB PAGE DOCS:
89   ssh ${chiark%%:*}
90   cd ${chiark#*:}
91   rm -f docs.tmp
92   ln -s $webout docs.tmp
93   mv -Tf docs.tmp docs
94 END