You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@apache.org on 2003/01/03 10:32:17 UTC
cvs commit: httpd-dist/tools release.sh
striker 2003/01/03 01:32:17
Added: tools release.sh
Log:
A new release script to make rolling releases easier. Derived from
apr-dist/tools/release.sh.
Revision Changes Path
1.1 httpd-dist/tools/release.sh
Index: release.sh
===================================================================
#!/bin/sh
#
# release.sh : build a release tarball
#
# USAGE: release.sh PROJECT VERSION [SIGNING-USER]
#
# The project is either 'httpd-1.3' or 'httpd-2.0'
#
# The version number is specified as MAJOR.MINOR.PATCH (and will be used
# in the output tarball name). The script will then look for a CVS tag
# named "APACHE_{MAJOR}_{MINOR}_{PATCH}" and export it into a subdirectory
# (of the current directory). Next, it will run the appropriate commands
# to prepare and construct the tarball. The subdirectory will be cleaned
# up upon exit.
#
# The "signing user" is the name of the key that you'll be signing the
# release with.
#
if test "$#" != 2 && test "$#" != 3; then
echo "USAGE: $0 PROJECT VERSION [SIGNING-USER]" >&2
echo " see the comments in this script for more info." >&2
exit 1
fi
case "$1" in
httpd-1.3)
repos_name="apache-1.3"
tag_prefix="APACHE"
ver_path="src/include/httpd.h"
ver_define="SERVER_BASEREVISION"
;;
httpd-2.0)
repos_name="httpd-2.0"
tag_prefix="APACHE"
ver_path="include/ap_release.h"
ver_define="AP_SERVER_PATCHLEVEL"
apr_xxx_in_srclib=1
;;
*)
echo "ERROR: '$1' is an unknown project." >&2
echo " choose one of: httpd-1.3, httpd-2.0" >&2
exit 1
esac
vsn="$2"
major="`echo $vsn | sed 's/\..*$//'`"
minor="`echo $vsn | sed 's/^[0-9]*\.\([0-9]*\)\..*$/\1/'`"
patch="`echo $vsn | sed 's/^.*\.//'`"
tagname="${tag_prefix}_${major}_${minor}_${patch}"
dirname="`echo $repos_name | sed 's/-[0-9]*\.[0-9]*$//'`"
dirname="${dirname}-$vsn"
echo " Version: $vsn"
echo " Tag name: $tagname"
echo "Directory: $dirname"
if test -d ${dirname}; then
echo "ERROR: for safety, you must manually remove $dirname." >&2
exit 1
fi
split="---------------------------------------------------------------------"
# make sure that the perms are good for the tarball
umask 022
echo $split
echo ""
echo "Starting CVS export of ${repos_name} to $dirname ..."
echo ""
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic export -r ${tagname} -d ${dirname} ${repos_name} > /dev/null || exit 1
if test $apr_xxx_in_srclib
then
cd $dirname/srclib
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic export -r ${tagname} apr > /dev/null || exit 1
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic export -r ${tagname} apr-util > /dev/null || exit 1
cd ../..
fi
echo $split
echo ""
if grep "#define.*${ver_define}.*-dev" ${dirname}/${ver_path} > /dev/null; then
echo "ERROR: ${ver_path} still defines a development version." >&2
echo " This script can only produce formal releases." >&2
exit 1
fi
echo "Copying CHANGES file"
cp $dirname/CHANGES CHANGES_${major}_${minor}
echo ""
echo "Eliminating unwanted files (e.g. .cvsignore) and generating initial"
echo "files via buildconf ..."
echo ""
find $dirname -name .cvsignore | xargs rm -f
find $dirname -name autom4te*.cache | xargs rm -rf
find $dirname -name STATUS | xargs rm -rf
(cd ${dirname} && ./buildconf) || exit 1
echo $split
echo ""
echo "Building the tarball, .gz, and .Z files ..."
echo ""
tar cf ${dirname}.tar ${dirname}
gzip -9 --to-stdout ${dirname}.tar > ${dirname}.tar.gz
compress ${dirname}.tar
echo $split
echo ""
echo "Cleaning up and signing the files ..."
echo ""
rm -rf ${dirname}
if test -x "`which md5sum 2> /dev/null`"; then
md5sum ${dirname}.tar.gz > ${dirname}.tar.gz.md5
md5sum ${dirname}.tar.Z > ${dirname}.tar.Z.md5
fi
if test -x "`which pgp 2> /dev/null`"; then
if test -n "$3"; then
user="-u $3"
fi
pgp -sba ${dirname}.tar.gz ${user}
pgp -sba ${dirname}.tar.Z ${user}
elif test -x "`which gpg 2> /dev/null`"; then
if test -n "$3"; then
user="--default-key $3"
fi
gpg --armor ${user} --detach-sign ${dirname}.tar.gz
gpg --armor ${user} --detach-sign ${dirname}.tar.Z
else
echo "PGP or GnuPG not found! Not signing release!"
fi
RE: cvs commit: httpd-dist/tools release.sh
Posted by Sander Striker <st...@apache.org>.
> From: striker@apache.org [mailto:striker@apache.org]
> Sent: Friday, January 03, 2003 10:32 AM
> striker 2003/01/03 01:32:17
>
> Added: tools release.sh
> Log:
> A new release script to make rolling releases easier. Derived from
> apr-dist/tools/release.sh.
>
> Revision Changes Path
> 1.1 httpd-dist/tools/release.sh
A new release script aimed to replace the in-tree roll release script.
It needs some work to gain the same functionality*, but it's a start
to make things even easier.
Note: it currently fails for 1.3 due to:
cvs export: move away apache-1.3.27/htdocs/manual/install-tpf.html; it is in the way
I'm sure Jim is able to resolve this in the correct way ;)
Jim, could you enlighten me about the 1.3 roll process? I can't
seem to find the appropiate httpd_roll_release script.
Sander
*) So don't use it yet!