#!/bin/bash # Script to run after a release has been tagged, signed and pushed # to git. Will do a fresh checkout, verify the git tag, do fresh # build/dist, sign the dist with gpg, create a backup copy in HOME, # upload the tar.gz and sig to sourceware, checkout bzip2-htdocs, # copy over the new changes, manual, etc. and git push that to update # https://sourceware.org/bzip2/ # Any error is fatal set -e # We take one argument, the version (e.g. 1.0.7) if [ $# -ne 1 ]; then echo "$0 (e.g. 1.0.7)" exit 1 fi VERSION="$1" echo echo " === NOTE === " echo echo "Requires a sourceware account in the bzip2 group." echo echo "Make sure the git repo was tagged, signed and pushed" echo "If not, please double check the source tree is release ready first" echo "You probably want to run ./prepare-release.sh $VERSION first." echo "Then do:" echo echo " git tag -s -m \"bzip2 $VERSION release\" bzip2-$VERSION" echo " git push --tags" echo read -p "Do you want to continue creating/uploading the release (yes/no)? " if [ "x$REPLY" != "xyes" ]; then echo "OK, till next time." exit fi echo "OK, creating and updating the release." # Create a temporary directoy and make sure it is cleaned up. tempdir=$(mktemp -d) || exit trap "rm -rf -- ${tempdir}" EXIT pushd "${tempdir}" # Checkout git clone git://sourceware.org/git/bzip2.git cd bzip2 git tag --verify "bzip2-${VERSION}" git checkout -b "$VERSION" "bzip2-${VERSION}" # Create dist (creates bzip2-${VERSION}.tar.gz) make dist # Sign (creates bzip2-${VERSION}.tar.gz.sig) gpg -b bzip2-${VERSION}.tar.gz # Create backup copy echo "Putting a backup copy in $HOME/bzip2-$VERSION" mkdir $HOME/bzip2-$VERSION cp bzip2-${VERSION}.tar.gz bzip2-${VERSION}.tar.gz.sig $HOME/bzip2-$VERSION/ # Upload scp bzip2-${VERSION}.tar.gz bzip2-${VERSION}.tar.gz.sig \ sourceware.org:/sourceware/ftp/pub/bzip2/ ssh sourceware.org "(cd /sourceware/ftp/pub/bzip2 \ && ln -sf bzip2-$VERSION.tar.gz bzip2-latest.tar.gz \ && ln -sf bzip2-$VERSION.tar.gz.sig bzip2-latest.tar.gz.sig \ && ls -lah bzip2-latest*)" # Update homepage, manual, etc. cd "${tempdir}" git clone ssh://sourceware.org/git/bzip2-htdocs.git cp bzip2/CHANGES bzip2/bzip.css bzip2-htdocs/ cp bzip2/bzip.css bzip2/bzip2.txt bzip2/manual.{html,pdf} bzip2-htdocs/manual/ cd bzip2-htdocs # Update version in html pages. sed -i -e "s/The current stable version is bzip2 [0-9]\.[0-9]\.[0-9]\+/The current stable version is bzip2 ${VERSION}/" *.html */*.html git commit -a -m "Update for bzip2 $VERSION release" git show git push # Cleanup popd trap - EXIT exit