| 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 <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 | if [ $# != 1 ]; then fail "wrong # arguments"; fi |
| 26 | wantversion="$1" |
| 27 | |
| 28 | version=`sed -n <Makefile.in 's/^DISTVERSION=[ ]*//p'` |
| 29 | |
| 30 | if [ "x$version" != "x$wantversion" ]; then |
| 31 | fail "you say version $wantversion but tree is $version" |
| 32 | fi |
| 33 | |
| 34 | gpgkey='-u 0x48B50D39' |
| 35 | chiark=chiark:/u/ian/public-html/adns |
| 36 | chiarkftp=$chiark/ftp |
| 37 | |
| 38 | x () { echo "----- $* -----"; "$@"; } |
| 39 | |
| 40 | x git clean -xdff |
| 41 | x ./configure |
| 42 | x make -j4 |
| 43 | x make check |
| 44 | x make dist |
| 45 | rm -rf web |
| 46 | x make web-install |
| 47 | |
| 48 | distfile=adns-$version.tar.gz |
| 49 | x test -f $distfile |
| 50 | |
| 51 | tag=adns-${version//\~/-} |
| 52 | webout=docs-$version |
| 53 | |
| 54 | x gpg --detach-sign $distfile |
| 55 | x git tag -s $gpgkey -m "adns release $version" $tag |
| 56 | x git push origin $tag~0:master $tag |
| 57 | |
| 58 | distfiles="$distfile $distfile.sig" |
| 59 | x rsync -vP $distfiles $chiarkftp/ |
| 60 | |
| 61 | x rsync -rvP web/. $chiark/$webout |
| 62 | |
| 63 | x sha256sum $distfiles |
| 64 | |
| 65 | cat <<END |
| 66 | |
| 67 | TO UPDATE WEB PAGE DOCS: |
| 68 | ssh ${chiark%%:*} |
| 69 | cd ${chiark#*:} |
| 70 | rm -f docs.tmp |
| 71 | ln -s $webout docs.tmp |
| 72 | mv -Tf docs.tmp docs |
| 73 | END |