#!/bin/sh set -e if [ ! -d src ] || [ ! -f NEWS ] ; then echo "Please run me in bip sources root." >&2 exit 1 fi release_version="$1" release_name="$2" : ${MAKEOPTS:=-j -l4} set_version() { local release_version release_version="${1}" sed -i -e '/^AC_INIT/s/\(,\[\)[^]]*/\1'${release_version}'/' configure.ac } get_version() { grep -e '^AC_INIT' configure.ac | cut -d [ -f 3 | cut -d ] -f 1 } make_distcheck() { # prepare sources autoreconf -i -Wall # Create makefile, use all possible options ./configure # run distcheck if ! make ${MAKEOPTS} distcheck; then echo "'make distcheck' fails, please try again." >&2 return 1 else true fi } git log > ChangeLog if [ -n "$release_version" ]; then # Don't forget to update NEWS file before a release expected="$(date --rfc-3339=date) (${release_version})" if [ -n "${release_name}" ]; then expected="${expected} \"${release_name}\"" fi head -n 1 NEWS | grep -q "^${expected}$" || (echo "NEWS file doesn't match the expected format (${expected})" && exit 1) set_version "${release_version}" make_distcheck || exit 1 git commit -a --gpg-sign -m "Update version and ChangeLog for bip-${release_version} release." TAG_COMMENT="Release ${release_version}" if [ -n "${release_name}" ]; then TAG_COMMENT="${TAG_COMMENT} '${release_name}'" fi git tag --sign -m "${TAG_COMMENT}" release-${release_version} set_version "${release_version}-git" git commit -a --gpg-sign -m "Add -git to version string." echo "See bip-${release_version}.tar.gz" else make_distcheck || exit 1 tarname=bip-$(get_version) prefix=bip-$(date +%Y%m%d) rm -rf "${tarname}" "${prefix}" tar -xzf "${tarname}".tar.gz rm -rf "${tarname}".tar.gz mv "${tarname}" "${prefix}" tar -czf "${prefix}".tar.gz "${prefix}" rm -rf "${prefix}" # Revert the ChangeLog. git checkout HEAD -- ChangeLog echo "See ${prefix}.tar.gz" fi # cleanup git clean -d -i -e "bip-*.tar.gz"