Rev 2744 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/bin/bash
PROGDIR=$(dirname $(readlink -f $0))
#ANT_JAVAC_TARGET="-Dant.build.javac.target=1.6 -Dant.build.javac.source=1.6"
#ANT_JAVAC_TARGET="-Dant.build.javac.target=1.7 -Dant.build.javac.source=1.7"
export JAVA_HOME=/opt/java
export PATH="$JAVA_HOME/bin:$VIRTUAL_ENV/bin:/bin:/usr/bin:/usr/local/bin:$PROGDIR"
export LANG=en_GB.UTF-8
source mksnapfuncs
typeset -i VERSION
while getopts "r:d:b:" c
do
case $c in
b) BRANCH=$OPTARG
if [ $OPTARG != 'trunk' ];then
BRANCH_URL=branches/$OPTARG
fi
;;
r) VERSION=$OPTARG;;
d) SNAPDIR=$OPTARG;;
esac
done
shift $[OPTIND-1]
PRODUCT=$1
if [ "$PRODUCT" = "" ]; then
echo Usage: "mksnap [-d dir] [-b branch] [-r vers] <product>"
exit
fi
SVN=http://svn.mkgmap.org.uk/$PRODUCT
BRANCH=${BRANCH:-trunk}
BRANCH_URL=${BRANCH_URL:-trunk}
SNAPDIR=${SNAPDIR:-$HOME/www/mkgmap.org.uk/docroot/download}
#
# Get the real highest revision that was commited to the given branch
# that is less that the given revision.
# If no revision given then get the latest on the branch.
#
CHECK_URL=$SVN/$BRANCH_URL
if [ "$VERSION" != "" ]; then
CHECK_URL="${CHECK_URL}@$VERSION"
fi
VERSION=$(svn log --xml --limit 1 $CHECK_URL 2> /dev/null | \
sed -n '/<logentry/N;/\n/s/.*revision="\([0-9]*\)".*/\1/p')
RELNAME=$PRODUCT-$BRANCH-r$VERSION
RELNAME=${RELNAME/-trunk/}
TARGET=$SNAPDIR/$RELNAME.tar.gz
TARGET_ZIP=$SNAPDIR/$RELNAME.zip
TARGET_JAR=$SNAPDIR/$RELNAME.jar
TARGET_SRC=$SNAPDIR/$RELNAME-src.tar.gz
TARGET_SRC_ZIP=$SNAPDIR/$RELNAME-src.zip
BUILD_DIST=1
BUILD_TARGETS='dist'
# No standard between different products, so set the build target
# appropriate to the product.
case "$PRODUCT" in
display)
BUILD_DIST=0
BUILD_TARGETS='dist'
;;
mkgmap)
BUILD_TARGETS='dist obtain-test-input-files test'
;;
splitter)
BUILD_TARGETS='dist run.tests'
;;
esac
# On a branch we do not run the tests, anything goes!
if [ $BRANCH != 'trunk' ]; then
BUILD_TARGETS='dist'
fi
if [ ! -f $TARGET ]; then
echo Rebuilding $TARGET
cd /usr/tmp
BUILD_DIR=/usr/tmp/build-mkgmap/$RELNAME
mkdir -p $(dirname $BUILD_DIR)
trap "rm -rf $BUILD_DIR" 0
rm -rf $BUILD_DIR # make sure it does not exist before export
svn export -q -r$VERSION $SVN/$BRANCH_URL $BUILD_DIR
cd $BUILD_DIR
# Create version files to record the version that is being built
if [ -d resources ]; then
echo "svn.version: $VERSION" > resources/$PRODUCT-version.properties
echo "build.timestamp: $(date -Iseconds)" >> resources/$PRODUCT-version.properties
fi
# Create a pure source distribution as tar
tar czCf $(dirname $BUILD_DIR) $TARGET_SRC $RELNAME
# Create source as zip
(cd $(dirname $BUILD_DIR); zip -r $TARGET_SRC_ZIP $RELNAME) > /dev/null
if [ "$BUILD_DIST" = 1 ]; then
ant $ANT_JAVAC_TARGET -Dhave.version=1 $BUILD_TARGETS || {
redis-cli lpush svn:build "failed:$PRODUCT:$BRANCH:$VERSION"
rm -f $TARGET_SRC_ZIP $TARGET_SRC
exit 1
}
CURRENT=$(redis-cli hget svn:current:$PRODUCT version)
if [ -x $PROGDIR/mkdoc -a $VERSION -gt $CURRENT ]; then
$PROGDIR/mkdoc $PRODUCT
fi
# Save the jar file separately
cp dist/$PRODUCT.jar $TARGET_JAR
mv dist $RELNAME
tar czf $TARGET $RELNAME
zip -r $TARGET_ZIP $RELNAME
redis-cli lpush svn:build "success:$PRODUCT:$BRANCH:$VERSION"
fi
fi
cd $SNAPDIR
if [ "$BUILD_DIST" = 1 ]; then
mksnap_setdate $VERSION $TARGET $TARGET_ZIP \
$TARGET_SRC $TARGET_SRC_ZIP \
$TARGET_JAR
fi