aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/scripts/build_plugins.sh
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/scripts/build_plugins.sh')
-rwxr-xr-xeclipse/scripts/build_plugins.sh225
1 files changed, 225 insertions, 0 deletions
diff --git a/eclipse/scripts/build_plugins.sh b/eclipse/scripts/build_plugins.sh
new file mode 100755
index 0000000..5f94ca0
--- /dev/null
+++ b/eclipse/scripts/build_plugins.sh
@@ -0,0 +1,225 @@
+#!/bin/bash
+
+# build script for eclipse adt build on linux platform
+#
+# Usage: development/tools/eclipse/scripts/build_plugins <build_version>
+#
+# It expects environment variable ECLIPSE_HOME to be defined to point to _your_
+# version of Eclipse RCP (must have the WTP & GEF plugins available too.)
+#
+# If ECLIPSE_HOME is not provided, this script will _download_ a reference version
+# of Eclipse RCP and install it in a specific location.
+#
+# Other properties, ant scripts that drive the build are defined in ./buildConfig
+# Currently, this script will create an update site at ${user.home}/www/no_crawl/android-build
+# or at the directory specified using "-d"
+
+# Known Issues:
+# - Build does not properly clean up after itself (build server always executes from
+# a clean state.)
+# - Script will fail if current absolute path has spaces in it.
+# - Only linux is supported for now
+
+
+set -e # abort this script early if any command fails
+
+#
+# -- Utility methods --
+#
+
+function printUsage() {
+ echo "Usage: $0 <build_qualifier> [-i] [-d <destination-directory>] [-a <archivePrefix>] "
+ echo "<build_qualifier>: build qualifier string"
+ echo "-i = build internal site. Otherwise, external site will be built"
+ echo "-d = destination directory. Default is $USER/www/no_crawl/. Cannot contain spaces."
+ echo "-a = archive prefix. Cannot contain spaces."
+}
+
+function die() {
+ echo $@
+ exit 1
+}
+
+function dieWithUsage() {
+ echo $@
+ echo
+ printUsage
+ exit 1
+}
+
+
+#
+# -- Setup our custom version of Eclipse --
+#
+
+# The dependency on the linux platform comes from a series of environment
+# variables that the eclipse ant runner expects. These are defined in the
+# build.properties file. We can easily support other platforms but would need
+# to override those values in this script.
+HOST=`uname`
+[ "$HOST" == "Linux" ] || die "ERROR: This script is currently only supported on Linux platform"
+
+# Make sure this runs from the tools/eclipse plugin.
+D=`dirname "$0"`
+cd "$D/.."
+[ `basename "$PWD"` == "eclipse" ] || dieWithUsage "Please run this script from the device/tools/eclipse directory"
+
+# check for number of parameters
+[ $# -lt 1 ] && dieWithUsage "ERROR: Not enough parameters"
+
+# check if ECLIPSE_HOME set (ECLIPSE_HOME is were the "eclipse" binary and the
+# "plugins" sub-directory are located)
+if [ -z "$ECLIPSE_HOME" ]; then
+ BASE_DIR=/buildbot/eclipse-android
+
+ echo "ECLIPSE_HOME not set, using $BASE_DIR as default"
+
+ if [ ! -d "$BASE_DIR" ]; then
+ mkdir -p "$BASE_DIR" || die "Please create a directory $BASE_DIR where Eclipse will be installed, i.e. execute 'mkdir -p $BASE_DIR && chown $USER $BASE_DIR'."
+ fi
+
+ # download the version if not available
+ VERSION="3.4.0"
+ BASE_DIR="$BASE_DIR/$VERSION"
+ scripts/setup_eclipse.sh -p "$BASE_DIR"
+
+ ECLIPSE_HOME="$BASE_DIR/eclipse" # path to installed directory
+ PID_FILE="$BASE_DIR/eclipse.pid"
+ [ -f "$PID_FILE" ] && ECLIPSE_PID=`cat "$PID_FILE"`
+fi
+
+echo "PWD=`pwd`"
+echo "ECLIPSE_HOME=$ECLIPSE_HOME"
+
+#
+# -- Site parameters and Build version --
+#
+
+BUILD_VERSION="$1" ; shift
+
+# parse for build internal site flag. If set, pass in internalSite property to ant scripts
+if [ "-i" == "$1" ]; then
+ shift
+ echo "Setting for internal site build"
+ SITE_PARAM="-DinternalSite=1 -DupdateSiteSource=$PWD/sites/internal"
+else
+ SITE_PARAM="-DupdateSiteSource=$PWD/sites/external"
+fi
+
+if [ "-d" == $1 ]; then
+ shift
+ echo "Setting destination directory to $1"
+ SITE_PARAM="$SITE_PARAM -DupdateSiteRoot=$1"
+ shift
+fi
+
+if [ "-a" == "$1" ]; then
+ shift
+ echo "Setting archivePrefix to $1"
+ SITE_PARAM="$SITE_PARAM -DarchivePrefix=$1"
+ shift
+fi
+
+
+#
+# -- Configuration directory --
+#
+
+# The "configuration directory" will hold the workspace for this build.
+# If it contains old data the build may fail so we need to clean it first
+# and create it if it doesn't exist.
+CONFIG_DIR="../../../out/eclipse-configuration-$BUILD_VERSION"
+[ -d "$CONFIG_DIR" ] && rm -rfv "$CONFIG_DIR"
+mkdir -p "$CONFIG_DIR"
+
+# The "buildConfig" directory contains our customized ant rules
+BUILDCONFIG="$PWD/buildConfig"
+
+
+#
+# -- Find Eclipse Launcher --
+#
+
+# Get the Eclipse launcher and build script to use
+function findFirst() {
+ for i in "$@"; do
+ if [ -f "$i" ]; then
+ echo "$i"
+ return
+ fi
+ done
+}
+
+LAUNCHER=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.equinox.launcher_*.jar`
+BUILDFILE=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.pde.build_*/scripts/build.xml`
+
+# make sure we found valid files
+if [ ! -f "$LAUNCHER" ]; then
+ echo "Installation Error: Eclipse plugin org.eclipse.equinox.launcher...jar not detected. " \
+ "Found '$LAUNCHER'. Aborting."
+ exit 1
+fi
+if [ ! -f "$BUILDFILE" ]; then
+ echo "Installation Error: Eclipse build file org.eclipse.pde.build_.../scripts/build.xml " \
+ "not detected. Found '$BUILDFILE'. Aborting."
+ exit 1
+fi
+
+
+#
+# -- Print configuration used and actually execute the build --
+#
+
+echo "Eclipse configuration found:"
+echo " Eclipse Home: $ECLIPSE_HOME"
+echo " Launcher: $LAUNCHER"
+echo " Build File: $BUILDFILE"
+echo " Build Config: $BUILDCONFIG"
+echo " Config Dir: $CONFIG_DIR"
+
+# clean input directories to make sure there's nothing left from previous run
+
+rm -fv *.properties *.xml
+find . -name "@*" | xargs rm -rfv
+
+# Now execute the ant runner
+
+set +e # don't stop on errors anymore, we want to catch there here
+
+java \
+ -jar $LAUNCHER \
+ -data "$CONFIG_DIR" \
+ -configuration "$CONFIG_DIR" \
+ -application org.eclipse.ant.core.antRunner \
+ -buildfile $BUILDFILE \
+ -Dbuilder=$BUILDCONFIG \
+ -DbuildDirectory=$PWD \
+ -DforceContextQualifier=$BUILD_VERSION \
+ -DECLIPSE_HOME=$ECLIPSE_HOME \
+ $SITE_PARAM
+RESULT=$?
+
+if [ "0" != "$RESULT" ]; then
+ echo "JAVA died with error code $RESULT"
+ echo "Dump of build config logs:"
+ for i in "$CONFIG_DIR"/*.log; do
+ if [ -f "$i" ]; then
+ echo "----------------------"
+ echo "--- $i"
+ echo "----------------------"
+ cat "$i"
+ echo
+ fi
+ done
+fi
+
+#
+# -- Cleanup
+#
+
+if [ -n "$ECLIPSE_PID" ] && [ -f "$PID_FILE" ]; then
+ rm -fv "$PID_FILE"
+ kill -9 "$ECLIPSE_PID"
+fi
+
+# we're done!