File: mksnap

package info (click to toggle)
mkgmap 0.0.0%2Bsvn4905-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 12,032 kB
  • sloc: java: 73,856; xml: 1,695; python: 713; sh: 240; makefile: 149; perl: 31
file content (138 lines) | stat: -rwxr-xr-x 3,390 bytes parent folder | download | duplicates (7)
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