X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=doc-maint%2Fmake-xboard-release;fp=doc-maint%2Fmake-xboard-release;h=c7acee671358efa0ba0b24ecad668231c5ffbb25;hb=e875cb670c1628841fac114efb31bec453b13eed;hp=0000000000000000000000000000000000000000;hpb=b72b882722e75f944eef895459e050f4c9a88e52;p=xboard.git diff --git a/doc-maint/make-xboard-release b/doc-maint/make-xboard-release new file mode 100644 index 0000000..c7acee6 --- /dev/null +++ b/doc-maint/make-xboard-release @@ -0,0 +1,186 @@ +#!/bin/bash + +# the script will check out the correct branch, run "make distcheck", +# tag git, and upload the files to the GNU server. + +# you need to have your GPG key registered with the GNU people for the upload to work! + +# the script includes some minimal error checking and tries to automate the following: +# * check if the commit is already tagged +# * if version number includes a date like 20120304 (to be exact *20??????), +# it will create a developer release otherwise a normal release +# * if you have local tags that you don't want to upload, you need to add them further down to git tag -d ... + +# you need to set the following to reasonable value for the script to work + +# the script at the moment also only works for master and branches called v4*, easy to change in the script though +GITDIR=/home/arun/src/Prog/xboard +UPLOADDIR=/home/arun/tmp/xboard-upload +GPGKEYID="F51BC536" + +# default: make a release from master +BRANCH="master" + +function usage () { + echo >&2 "usage: $0 [-b branch]" + } + +# check if we want to make a release from another branch +while getopts b: opt +do + case "$opt" in + b) BRANCH="$OPTARG";; + \?) # unknown flag + usage + exit 1;; + esac +done +shift `expr $OPTIND - 1` + +if [ $# -gt 0 ] ; then + usage + exit 1 +fi + +# output information to the user and ask for confirmation +echo " Tagging and uploading new xboard release to GNU" +echo " branch: $BRANCH" +echo "" + +# go into a tmp directory, clone xboard, check out branch + +cd $GITDIR + +TEX=tex + +git checkout $BRANCH + +read -n 1 -p "Should be on correct branch now. Continue?" REPLY + +# get version information + +VERSION=`grep AC_INIT configure.ac | sed -e 's/^.*\[.*\],\[\(.*\)\],.*$/\1/' ` + +#make sure we don't do things too often +RESULT=`git tag | grep "^$VERSION\$"` +if [ "$RESULT" != "" ] ; then + echo "this version is already tagged... exiting." + exit 1 +fi + +################# + +# output some summary information and have user confirm it + +if [[ $BRANCH == v4* ]] ; then + TAGNAME=v$VERSION +else + TAGNAME=$VERSION +fi + +FTPSERVER="ftp-upload.gnu.org" +if [[ $VERSION == *20?????? ]] ; then + TAGMESSAGE="new developer release" + FTPDIR="incoming/alpha" +else + TAGMESSAGE="new release of version $VERSION" + FTPDIR="incoming/ftp" +fi + +# ask for confirmation from user +echo " make sure that you are on the right commit (should be the one that changes the version number)!" +echo " version will be tagged as: $TAGNAME" +echo " tar ball will be named: xboard-${VERSION}.tar.gz " +echo " tag message: $TAGMESSAGE" +echo "" +read -n 1 -p "Continue (y/N)?" REPLY +echo "" + +if [ "x$REPLY" != "xy" ]; then + echo " exiting now!" + exit 2 +fi + +echo "cleaning up tags" +# git tag -d + + +echo "tagging commit" +git tag -u $GPGKEYID -m "$TAGMESSAGE" $TAGNAME + +echo "create tar ball" +./autogen.sh +./configure +TEX=tex make distcheck + +if [ -s xboard-${VERSION}.tar.gz ] ; then + echo "" + echo " make distcheck seems to be ok" + echo "" +else + echo "" + echo " problem with make distcheck" + echo "" + exit 3 +fi + +echo "move tar ball to upload directory" +mv xboard-${VERSION}.tar.gz $UPLOADDIR + +echo "cd into upload directory" +cd $UPLOADDIR + +# create files necessary for upload to GNU +echo "creating directive" +echo "version: 1.1 +directory: xboard +filename: xboard-${VERSION}.tar.gz +comment: $TAGMESSAGE " > xboard-${VERSION}.tar.gz.directive + +echo "signing packages" +gpg -b xboard-${VERSION}.tar.gz +gpg --clearsign xboard-${VERSION}.tar.gz.directive + +echo "uploading..." + +echo " +The files can be found in $UPLOADDIR. Go and test them :) + +Will do the following in a second followed by a git push + +ftp -n -v $FTPSERVER <