[parted-devel] parted-release: adjustments
Jim Meyering
jim at meyering.net
Thu Jul 23 08:56:33 UTC 2009
Joel,
Here's a new version of your script.
Changes I've made:
Do not clone gnulib separately. That is no longer needed,
and doing so is wasteful.
Remove the recursive chown.
It is not needed if you first run "make check" as non-root.
In addition, it would cause the no-submodule-changes check to fail.
----------------------------------
BTW, there was also a problem with maint.mk's use of xz,
and I've fixed that via a patch to gnulib. Then I've pushed
the parted change to make it pull the latest from gnulib,
which includes that fix.
#!/bin/bash
v=""
user=$(id -u)
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. Pls 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
More information about the parted-devel
mailing list