1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!/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
|