blob: 2ba7ad96080cdcc215b941cf453714e93cd4e04b [file] [log] [blame]
#!/bin/ksh
# Make sure to set your path so that we can find
# the following binaries:
# cd, mkdir, cp, rm, find
# svn
# ant
# libtoolize, aclocal, autoheader, automake, autoconf
# tar, zip, gzip
# gpg
# And any one of: w3m, elinks, links (links2)
usage() {
echo "Usage:: $0 -t VERSION [-b BRANCH | -T | -d DIR]"
echo " -t: version to package"
echo " -b: package from branch BRANCH"
echo " -T: package from trunk"
echo " -d: package from local directory"
}
conflict=0
while getopts :t:b:d:T c
do
case $c in
t) tag=$OPTARG;;
b) branch=$OPTARG
conflict=$(($conflict+1));;
T) trunk=trunk
conflict=$(($conflict+1));;
d) local_dir=$OPTARG
conflict=$(($conflict+1));;
\:) usage
exit 2;;
\?) usage
exit 2;;
esac
done
shift `expr $OPTIND - 1`
if [ $conflict -gt 1 ]
then
usage
echo "Only one of the options '-b', '-T' and '-d' is allowed."
exit 2
fi
if [ -n "$local_dir" ]
then
echo "Caution: Packaging from directory!"
echo "Make sure the directory is committed."
answer="x"
while [ "$answer" != "y" -a "$answer" != "n" ]
do
echo "Do you want to procede? [y/n]"
read answer
done
if [ "$answer" != "y" ]
then
echo "Aborting."
exit 4
fi
fi
SVNROOT="http://svn.apache.org/repos/asf"
SVNPROJ="tomcat/connectors"
JK_CVST="tomcat-connectors"
JK_OWNER="root"
JK_GROUP="bin"
COPY_TOP="KEYS LICENSE NOTICE"
COPY_JK="BUILD.txt native jkstatus support tools xdocs"
COPY_CONF="uriworkermap.properties workers.properties workers.properties.minimal"
#################### NO CHANGE BELOW THIS LINE ##############
if [ -z "$tag" ]
then
usage
exit 2
fi
if [ -n "$trunk" ]
then
JK_SVN_URL="${SVNROOT}/${SVNPROJ}/trunk"
JK_REV=`svn info ${JK_SVN_URL} | awk '$1 == "Revision:" {print $2}'`
if [ -z "$JK_REV" ]
then
echo "No Revision found at '$JK_SVN_URL'"
exit 3
fi
JK_DIST=${JK_CVST}-${tag}-dev-${JK_REV}-src
elif [ -n "$branch" ]
then
JK_BRANCH=`echo $branch | sed -e 's#/#__#g'`
JK_SVN_URL="${SVNROOT}/${SVNPROJ}/branches/$branch"
JK_REV=`svn info ${JK_SVN_URL} | awk '$1 == "Revision:" {print $2}'`
if [ -z "$JK_REV" ]
then
echo "No Revision found at '$JK_SVN_URL'"
exit 3
fi
JK_DIST=${JK_CVST}-${tag}-dev-${JK_BRANCH}-${JK_REV}-src
elif [ -n "$local_dir" ]
then
JK_SVN_URL="$local_dir"
JK_REV=`svn info ${JK_SVN_URL} | awk '$1 == "Revision:" {print $2}'`
if [ -z "$JK_REV" ]
then
echo "No Revision found at '$JK_SVN_URL'"
exit 3
fi
JK_DIST=${JK_CVST}-${tag}-dev-local-${JK_REV}-src
else
JK_VER=$tag
JK_TAG=`echo $tag | sed -e 's#^#JK_#' -e 's#\.#_#g'`
JK_BRANCH=`echo $tag | sed -e 's#^#jk#' -e 's#\.[0-9][0-9]*$##' -e 's#$#.x#'`
JK_SVN_URL="${SVNROOT}/${SVNPROJ}/tags/${JK_BRANCH}/${JK_TAG}"
JK_DIST=${JK_CVST}-${JK_VER}-src
fi
umask 022
rm -rf ${JK_DIST}
rm -rf ${JK_DIST}.tmp
mkdir -p ${JK_DIST}.tmp
svn export "${JK_SVN_URL}/jk" ${JK_DIST}.tmp/jk
for item in ${COPY_TOP}
do
svn export "${JK_SVN_URL}/${item}" ${JK_DIST}.tmp/${item}
done
# Build documentation.
cd ${JK_DIST}.tmp/jk/xdocs
ant
cd ../../..
# Copying things into source distribution
srcdir=${JK_DIST}.tmp
targetdir=${JK_DIST}
mkdir -p ${targetdir}
for item in ${COPY_TOP}
do
echo "Copying $item from ${srcdir} ..."
cp -pr ${srcdir}/$item ${targetdir}/
done
srcdir=${JK_DIST}.tmp/jk
targetdir=${JK_DIST}
mkdir -p ${targetdir}
for item in ${COPY_JK}
do
echo "Copying $item from ${srcdir} ..."
cp -pr ${srcdir}/$item ${targetdir}/
done
srcdir=${JK_DIST}.tmp/jk/build
targetdir=${JK_DIST}
mkdir -p ${targetdir}
for item in docs
do
echo "Copying $item from ${srcdir} ..."
cp -pr ${srcdir}/$item ${targetdir}/
done
srcdir=${JK_DIST}.tmp/jk/conf
targetdir=${JK_DIST}/conf
mkdir -p ${targetdir}
for item in ${COPY_CONF}
do
echo "Copying $item from ${srcdir} ..."
cp -pr ${srcdir}/$item ${targetdir}/
done
# Remove extra directories and files
targetdir=${JK_DIST}
rm -rf ${targetdir}/xdocs/jk2
rm -rf ${targetdir}/native/CHANGES.txt
rm -rf ${targetdir}/native/build.xml
find ${JK_DIST} -name .cvsignore -exec rm -rf \{\} \;
find ${JK_DIST} -name CVS -exec rm -rf \{\} \;
find ${JK_DIST} -name .svn -exec rm -rf \{\} \;
cd ${JK_DIST}/native
# Check for links, elinks or w3m
W3MOPTS="-dump -cols 80 -t 4 -S -O iso-8859-1 -T text/html"
ELNKOPTS="-dump -dump-width 80 -dump-charset iso-8859-1 -no-numbering -no-references -no-home"
LNKOPTS="-dump -width 80 -codepage iso-8859-1 -no-g -html-numbered-links 0"
failed=true
for tool in `echo "w3m elinks links"`
do
found=false
for dir in `echo ${PATH} | sed 's!^:!.:!;s!:$!:.!;s!::!:.:!g;s!:! !g'`
do
if [ -x ${dir}/${tool} ]
then
found=true
break
fi
done
# Try to run it
if ${found}
then
case ${tool} in
w3m)
TOOL="w3m $W3MOPTS"
;;
links)
TOOL="links $LNKOPTS"
;;
elinks)
TOOL="elinks $ELNKOPTS"
;;
esac
rm -f CHANGES
echo "Creating the CHANGES file using '$TOOL' ..."
${TOOL} ../docs/miscellaneous/printer/changelog.html > CHANGES 2>/dev/null
if [ -f CHANGES -a -s CHANGES ]
then
failed=false
break
fi
fi
done
if [ ${failed} = "true" ]
then
echo "Can't convert html to text (CHANGES)"
exit 1
fi
# Export text docs
echo "Creating the NEWS file using '$TOOL' ..."
rm -f NEWS
touch NEWS
for news in `ls -r ../xdocs/news/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].xml`
do
print=`echo $news | sed -e 's#xdocs/news#docs/news/printer#' -e 's#\.xml#.html#'`
echo "Adding $print to NEWS file ..."
${TOOL} $print >>NEWS
done
if [ ! -s NEWS ]
then
echo "Can't convert html to text (NEWS)"
exit 1
fi
# Generate configure et. al.
./buildconf.sh
cd ../../
# Pack and sign
tar cfz ${JK_DIST}.tar.gz --owner="${JK_OWNER}" --group="${JK_GROUP}" ${JK_DIST}
perl ${JK_DIST}/tools/lineends.pl --cr ${JK_DIST}
zip -9 -r ${JK_DIST}.zip ${JK_DIST}
# Create detatched signature
gpg -ba ${JK_DIST}.tar.gz
gpg -ba ${JK_DIST}.zip