aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/scripts/build_server.sh
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/scripts/build_server.sh')
-rwxr-xr-xeclipse/scripts/build_server.sh118
1 files changed, 118 insertions, 0 deletions
diff --git a/eclipse/scripts/build_server.sh b/eclipse/scripts/build_server.sh
new file mode 100755
index 0000000..39c8dcd
--- /dev/null
+++ b/eclipse/scripts/build_server.sh
@@ -0,0 +1,118 @@
+#!/bin/bash
+# Entry point to build the Eclipse plugins for the build server.
+#
+# Input parameters:
+# $1: *Mandatory* destination directory. Must already exist. Cannot contain spaces.
+# $2: Optional build number. If present, will be appended to the date qualifier.
+# The build number cannot contain spaces *nor* periods (dashes are ok.)
+# -z: Optional, prevents the final zip and leaves the udate-site directory intact.
+# -i: Optional, if present, the Google internal update site will be built. Otherwise,
+# the external site will be built
+# Workflow:
+# - make dx, ddms, ping
+# - create symlinks (for eclipse code reorg, for ddms, ping)
+# - call the actual builder script from Brett
+# - zip resulting stuff and move to $DEST
+# Note: currently wrap around existing shell script, reuse most of it,
+# eventually both might merge as needed.
+
+set -e # Fail this script as soon as a command fails -- fail early, fail fast
+
+DEST_DIR=""
+BUILD_NUMBER=""
+CREATE_ZIP="1"
+INTERNAL_BUILD=""
+
+function get_params() {
+ # parse input parameters
+ while [ $# -gt 0 ]; do
+ if [ "$1" == "-z" ]; then
+ CREATE_ZIP=""
+ elif [ "$1" == "-i" ]; then
+ INTERNAL_BUILD="-i"
+ elif [ "$1" != "" ] && [ -z "$DEST_DIR" ]; then
+ DEST_DIR="$1"
+ elif [ "$1" != "" ] && [ -z "$BUILD_NUMBER" ]; then
+ BUILD_NUMBER="$1"
+ fi
+ shift
+ done
+}
+
+function die() {
+ echo "Error:" $*
+ echo "Aborting"
+ exit 1
+}
+
+function check_params() {
+ # This needs to run from the top android directory
+ # Automatically CD to the top android directory, whatever its name
+ D=`dirname "$0"`
+ cd "$D/../../../../" && echo "Switched to directory $PWD"
+
+ # The current Eclipse build has some Linux dependency in its config files
+ [ `uname` == "Linux" ] || die "This must run from a Linux box."
+
+ # Check dest dir exists
+ [ -n "$DEST_DIR" ] || die "Usage: $0 <destination-directory> [build-number]"
+ [ -d "$DEST_DIR" ] || die "Destination directory $DEST_DIR must exist."
+}
+
+function build_libs() {
+ MAKE_OPT="-j8"
+ echo "*** Building: make $MAKE_OPT dx ping ddms jarutils androidprefs layoutlib_api ninepatch sdklib sdkuilib"
+ make $MAKE_OPT dx ping ddms jarutils androidprefs layoutlib_api layoutlib_utils ninepatch sdklib sdkuilib
+}
+
+function build_plugin {
+ development/tools/eclipse/scripts/create_all_symlinks.sh
+
+ # Qualifier is "v" followed by date/time in YYYYMMDDHHSS format and the optional
+ # build number.
+ DATE=`date +v%Y%m%d%H%M`
+ QUALIFIER="$DATE"
+ [ -n "$BUILD_NUMBER" ] && QUALIFIER="${QUALIFIER}-${BUILD_NUMBER}"
+
+ # Compute the final directory name and remove any leftovers from previous
+ # runs if any.
+ BUILD_PREFIX="android-eclipse"
+ if [ "$INTERNAL_BUILD" ]; then
+ # append 'eng' signifier to end of archive name to denote internal build
+ BUILD_PREFIX="${BUILD_PREFIX}-eng"
+ fi
+
+ # exclude date from build-zip name so it can be auto-calculated by continuous
+ # test process unless there's no build number, in which case the date is
+ # still used (useful for testing)
+ ZIP_NAME="${BUILD_PREFIX}-${BUILD_NUMBER:-$DATE}.zip"
+ [ -d "$DEST_DIR/$BUILD_PREFIX" ] || rm -rfv "$DEST_DIR/$BUILD_PREFIX"
+
+ # Perform the Eclipse build and move the result in $DEST_DIR/android-build
+ development/tools/eclipse/scripts/build_plugins.sh $QUALIFIER $INTERNAL_BUILD -d "$DEST_DIR" -a "$BUILD_PREFIX"
+
+ # Cleanup
+ [ -d "$QUALIFIER" ] && rm -rfv "$QUALIFIER"
+
+ if [ "$CREATE_ZIP" ]; then
+ # The result is a full update-site under $DEST_DIR/BUILD_PREFIX
+ # Zip it and remove the directory.
+ echo "**** Package in $DEST_DIR"
+ [ -d "$DEST_DIR/$BUILD_PREFIX" ] || \
+ die "Build failed to produce $DEST_DIR/$BUILD_PREFIX"
+ cd "$DEST_DIR"
+ [ -f "$ZIP_NAME" ] && rm -rfv "$ZIP_NAME"
+ cd "$BUILD_PREFIX"
+ zip -9r "../$ZIP_NAME" *
+ cd .. # back to $DEST_DIR
+ rm -rfv "$BUILD_PREFIX" # removes the directory, not the zip
+ echo "ZIP of Update site available at $DEST_DIR/${ZIP_NAME}"
+ else
+ echo "Update site available in $DEST_DIR/$BUILD_PREFIX"
+ fi
+}
+
+get_params "$@"
+check_params
+build_libs
+build_plugin