diff options
author | Joel Granados Moreno <jgranado@redhat.com> | 2009-07-19 15:16:04 +0200 |
---|---|---|
committer | Joel Granados Moreno <jgranado@redhat.com> | 2009-07-23 12:02:00 +0200 |
commit | e17a6524fb54a1da36dc7d09d98b3f4b46060c3b (patch) | |
tree | 7ff08aaff97378b0fbc98335ad8d8a5e72df93b1 /build-aux | |
parent | 6e4a50c2187c59f12b9056971ec5f6d5b97f1e3e (diff) | |
download | parted-e17a6524fb54a1da36dc7d09d98b3f4b46060c3b.tar.gz |
Automate the release process.
* build-aux/parted-release: New file. Automates the part of the release
process that takes place in the local repository.
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/parted-release | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/build-aux/parted-release b/build-aux/parted-release new file mode 100755 index 0000000..9de7122 --- /dev/null +++ b/build-aux/parted-release @@ -0,0 +1,149 @@ +#!/bin/bash + +v="" +date=$(date +%F) +logfile="release.log" +parted_dir="" +key_string="" +key_id="" +stage_dir="$(pwd)/parted_release-$$" + +usage() +{ + echo "Script for releasing parted." + echo + echo "$0 --version VERSION [--key-id KEYID --stage-dir DIR]" + echo + echo " --version VERSION The version of parted to be released" + echo " --key-id KEYID Your GPG key id. If not given, -s argument" + echo " of gpg will be used" + echo " --stage-dir The directory that will be used to stage the" + echo " release process" +} + +# Get all the input values +while [ $# -gt 0 ] ; do + case $1 in + + --key-id) + key_string="-u $2" + key_id="$2" + shift; shift + ;; + + # The version that is to be released + --version) + v="$2" + shift; shift + ;; + + --stage-dir) + stage_dir="$2" + shift; shift + ;; + + --help) + usage + exit 0 + ;; + + # The default + *) + usage + exit 1 + ;; + + esac +done + +if [ "x$v" = "x" ] ; then + usage + exit 1 +fi + +if [ "x$key_string" = "x" -o "x$key_id" = "x" ] ; then + key_string="-s" + key_id="FIXME: YOUR_KEY" +fi + +_do_git_clone() +{ + git clone git://git.debian.org/git/parted/parted.git || return 1 + parted_dir="parted" +} + +_require_git() +{ + ( git --version ) > /dev/null 2>&1 || + { + echo "Could not find git. Please install from http://git-scm.com/download." + exit 1 + } +} + +_do_sanity_check() +{ + (cd $parted_dir + ./bootstrap && \ + ./configure && \ + make && \ + make check && \ + sudo make check RUN_VERY_EXPENSIVE_TESTS=yes RUN_EXPENSIVE_TESTS=yes && \ + make distcheck && \ + make maintainer-clean && \ + return 0 + ) >> $logfile 2>&1 || return 1 +} + +_do_release() +{ + (cd $parted_dir + news_line="* Noteworthy changes in release $v ($date) [stable]" + commit_message="version $v\n\n* NEWS: Record release date.\n" + sed -e "s/^.*in release.* (????-??-??) .*/$news_line/" -i NEWS && \ + git commit NEWS --message="$commit_message" && \ + git tag $key_string -m "parted $v" v$v HEAD && \ + ./bootstrap && \ + ./configure && \ + make && \ + make major && \ + return 0 + ) >> $logfile 2>&1 || return 1 +} + +_do_success() +{ + echo "\ +The release process has finished successfully. You are encouraged to follow +these steps:" + cat $parted_dir/README-release + exit 0 +} + +_do_fail() +{ + echo "\ +The process has returned an error please check the $logfile for more +information. Also check your global git configuration and network +configuration for possible overlooked issues. +" + exit 1 +} + +_require_git +echo "git is installed..." + +mkdir -p "$stage_dir" || exit 1 +cd "$stage_dir" + +echo "Cloning parted (this might take a few minutes)..." +_do_git_clone || _do_fail +echo "parted cloned..." + +echo "Sanity checking..." +_do_sanity_check || _do_fail + +echo "Creating the release..." +_do_release || _do_fail + +_do_success |