[parted-devel] [PATCH 3/3] Automate the release process.
Joel Granados Moreno
jgranado at redhat.com
Sun Jul 19 15:16:39 UTC 2009
* build-aux/parted-release: New file. Automates the part of the release
process that takes place in the local repository.
---
build-aux/parted-release | 157 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 0 deletions(-)
create mode 100755 build-aux/parted-release
diff --git a/build-aux/parted-release b/build-aux/parted-release
new file mode 100755
index 0000000..01106fc
--- /dev/null
+++ b/build-aux/parted-release
@@ -0,0 +1,157 @@
+#!/bin/bash
+
+v=""
+user=$(id -u)
+date=$(date +%F)
+logfile="release.log"
+parted_dir=""
+gnulib_dir=""
+key_string=""
+key_id=""
+
+usage()
+{
+ echo "Script for releasing parted."
+ echo
+ echo "$0 --version VERSION [--key-id KEYID]"
+ 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"
+}
+
+# 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
+ ;;
+
+ --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 -q http://git.debian.org/git/parted/parted.git && \
+ git clone -q git://git.sv.gnu.org/gnulib
+ } || return 1
+ parted_dir="parted"
+ gnulib_dir="gnulib"
+}
+
+_require_git()
+{
+ ( git --version ) > /dev/null 2>&1 ||
+ {
+ echo "Could not find git. Pls install from http://git-scm.com/download."
+ exit 1
+ }
+}
+
+_do_sanity_check()
+{
+ cd $parted_dir
+ {
+ ./bootstrap --gnulib-srcdir=../gnulib >> ../$logfile 2>&1 && \
+ ./configure >> ../$logfile 2>&1 && \
+ make >> ../$logfile 2>&1 && \
+ sudo make check RUN_VERY_EXPENSIVE_TESTS=yes RUN_EXPENSIVE_TESTS=yes \
+ >> ../$logfile 2>&1 && \
+ sudo chown $user.$user . -R >> ../$logfile 2>&1 && \
+ make distcheck >> ../$logfile 2>&1 && \
+ make maintainer-clean >> ../$logfile 2>&1 && \
+ cd .. \
+ return 0
+ } || {
+ cd ..
+ return 1
+ }
+}
+
+_do_release()
+{
+ cd $parted_dir
+ {
+ # Change the NEWS flie
+ 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 -F <(printf $commit_message) -a >> ../$logfile 2>&1 && \
+ git tag $key_string -m "parted $v" v$v HEAD && \
+ ./bootstrap --gnulib-srcdir=../gnulib >> ../$logfile 2>&1 && \
+ ./configure >> ../$logfile 2>&1 && \
+ make >> ../$logfile 2>&1 && \
+ make major >> ../$logfile 2>&1 && \
+ cd .. \
+ return 0
+ } || {
+ cd ..
+ 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..."
+
+echo "Cloning parted & gnulib (this might take a few minutes)..."
+_do_git_clone || _do_fail
+echo "parted & gnulib cloned..."
+
+echo "Sanitiy checking..."
+_do_sanity_check || _do_fail
+
+echo "Creating the release..."
+_do_release || _do_fail
+
+_do_success
--
1.6.0.6
More information about the parted-devel
mailing list