# * Maybe rerun autoconf
# * Ensure changelog reflects changes
# * Ensure NEWS reflects changes
+# * Maybe update copyright dates
# * Maybe update MAJOR and/or MINOR in common.make.in
# * Update DISTVERSION in Makefile.in
# * Update ADNS_VERSION_STRING in client/client.h
+# * Update version in ./changelog
+# * Commit the result
#
# * Run this script
-# ./RELEASE-CHECKLIST
+# ./RELEASE-CHECKLIST [--real] <version>
#
# * On chiark, maybe, replace ~ian/public-html/adns/current
-# with symlink to web-$(version) (as directed by script)
+# with symlink to web-$(version)
+#
+# * On chiark, maybe, replace docs link (as directed by script)
+#
+# * If not an rc release, put files on ftp.gnu.org
#
# * Send release announcement (use last one as template)
+#
+# * Update DISTVERSION, ADNS_VERSION_STRING and start new changelog entry
set -e
+fail () { echo >&2 "$0: $*"; exit 16; }
+
+real=false
+if [ "x$1" = x--real ]; then
+ real=true; shift
+fi
+
+if [ $# != 1 ]; then fail "wrong # arguments"; fi
+wantversion="$1"
+
version=`sed -n <Makefile.in 's/^DISTVERSION=[ ]*//p'`
+if [ "x$version" != "x$wantversion" ]; then
+ fail "you say version $wantversion but tree is $version"
+fi
+
gpgkey='-u 0x48B50D39'
chiark=chiark:/u/ian/public-html/adns
chiarkftp=$chiark/ftp
x () { echo "----- $* -----"; "$@"; }
+wx () { if $real; then x "$@"; else echo "WOULD: $*"; fi; }
x git clean -xdff
x ./configure
-x make -j4
-x make check
+x make -j6
+x make check -j6
x make dist
rm -rf web
x make web-install
-distfile=adns-$version.tar.gz
+distdir=adns-$version
+distfile=$distdir.tar.gz
x test -f $distfile
+rm -rf dist_tmp
+mkdir dist_tmp
+cd dist_tmp
+tar axf ../$distfile
+cd $distdir
+git init --quiet
+git fetch --quiet ../.. HEAD
+git add .
+git commit --quiet -m T
+git diff --exit-code FETCH_HEAD
+cd ../..
+
tag=adns-${version//\~/-}
webout=docs-$version
-x gpg --detach-sign $distfile
-x git tag -s $gpgkey -m "adns release $version" $tag
-x git push origin $tag~0:master $tag
+wx gpg --detach-sign $distfile
+wx git tag -s $gpgkey -m "adns release $version" $tag
+wx git push origin $tag~0:master $tag
distfiles="$distfile $distfile.sig"
-x rsync -vP $distfiles $chiarkftp/
+wx rsync -vP $distfiles $chiarkftp/
+
+wx rsync -rvP web/. $chiark/$webout
-x rsync -rvP web/. $chiark/$webout
+wx sha256sum $distfiles
-x sha256sum $distfiles
+if ! $real; then echo "NOT REAL"; exit 0; fi
cat <<END