2010-04-08 20:23:14 +02:00
#!/bin/sh
2010-02-07 06:25:44 +01:00
2010-02-08 00:15:50 +01:00
##########################################################
# Gridworks Control System #
##########################################################
2010-04-05 09:15:16 +02:00
# -------------- utility functions ----------------------
2010-03-30 23:24:04 +02:00
2010-02-09 21:21:10 +01:00
fail () {
cat <<EOF
2010-02-07 06:25:44 +01:00
ERROR: $1
2010-02-09 21:21:10 +01:00
Type '$0 -h' for usage information.
2010-02-07 06:25:44 +01:00
EOF
2010-02-09 21:21:10 +01:00
exit 1
}
error() {
echo "$1"
2010-02-08 00:15:50 +01:00
exit 1
2010-02-07 06:25:44 +01:00
}
2010-04-07 10:28:53 +02:00
warn() {
echo "$1"
exit 0
}
2010-02-07 06:25:44 +01:00
usage() {
2010-02-08 00:15:50 +01:00
cat <<EOF
2010-02-07 06:25:44 +01:00
Usage: $0 [options] <action>
where [options] include:
-h print this message and exit
2010-02-07 06:32:07 +01:00
-p <port> the port that gridworks will listen to
2010-02-07 06:25:44 +01:00
default: 3333
2010-02-08 00:15:50 +01:00
-i <interface> the host interface gridworks should bind to
default: 127.0.0.1
-w <path> path to the webapp
2010-06-05 03:29:55 +02:00
default: main/webapp
2010-03-03 03:53:07 +01:00
-d <path> path to the data directory
default: OS dependent
2010-03-30 23:24:04 +02:00
-m <memory> max memory heap size to use
default: 1024M
2010-04-03 03:28:54 +02:00
2010-04-23 10:25:52 +02:00
-v <level> verbosity level [from low to high: error,warn,info,debug,trace]
default: info
2010-03-03 03:53:07 +01:00
--debug enable JVM debugging (on port 8000)
2010-02-08 00:15:50 +01:00
2010-03-30 23:24:04 +02:00
--jmx enable JMX monitoring (for jconsole and jvisualvm)
2010-02-07 06:25:44 +01:00
and <action> is one of
2010-06-25 08:52:12 +02:00
build ............................... Build Gridworks
run ................................. Run Gridworks [default]
2010-03-09 09:08:35 +01:00
2010-06-25 08:52:12 +02:00
test ................................ Run all Gridworks tests
server_test ......................... Run only the server tests
ui_test ............................. Run only the UI tests
2010-05-05 01:41:57 +02:00
2010-06-25 08:52:12 +02:00
broker .............................. Run Gridworks Broker
2010-02-09 21:21:10 +01:00
2010-06-25 08:52:12 +02:00
broker_appengine_run <id> <ver> ..... Run Gridworks Broker for Google App Engine in local server
broker_appengine_upload <id> <ver> .. Upload Gridworks to Google App Engine
findbugs ............................ Run Findbugs against Gridworks
pmd ................................. Run PMD against Gridworks
cpd ................................. Run Copy/Paste Detection against Gridworks
jslint .............................. Run JSlint against Gridworks
2010-06-09 00:27:59 +02:00
2010-06-25 08:52:12 +02:00
whitespace <extension> .............. Normalize whitespace in files with the given extension
2010-06-09 00:27:59 +02:00
2010-06-25 08:52:12 +02:00
mac_dist <version> .................. Make MacOSX binary distribution
windows_dist <version> .............. Make Windows binary distribution
linux_dist <version> ................ Make Linux binary distribution
dist <version> ...................... Make all distributions
2010-03-04 09:46:33 +01:00
2010-06-25 08:52:12 +02:00
clean ............................... Clean compiled classes
distclean ........................... Remove all generated files
2010-02-08 00:15:50 +01:00
2010-02-07 06:25:44 +01:00
EOF
2010-02-09 21:21:10 +01:00
exit 1
2010-02-07 06:25:44 +01:00
}
2010-03-30 23:24:04 +02:00
2010-02-08 00:15:50 +01:00
add_option() {
2010-04-05 09:15:16 +02:00
OPTS="$OPTS $1"
2010-02-07 06:25:44 +01:00
}
2010-03-30 23:24:04 +02:00
load_configs() {
cat $1 | egrep "^[A-Z]" | sed 's/^\(.*\)$/export \1/' > .$1
. ./.$1
rm ./.$1
}
2010-02-09 21:21:10 +01:00
check_macosx() {
2010-04-14 23:18:27 +02:00
if ! $DARWIN ; then
2010-02-09 21:21:10 +01:00
error "This action can only run on MacOSX"
fi
}
2010-04-05 09:15:16 +02:00
2010-04-07 10:28:53 +02:00
check_downloaders() {
2010-04-14 03:37:56 +02:00
CURL="`which curl 2> /dev/null`"
WGET="`which wget 2> /dev/null`"
2010-04-07 10:28:53 +02:00
2010-04-08 20:23:14 +02:00
if [ -z "$CURL" -a -z "$WGET" ]; then
2010-04-07 10:28:53 +02:00
error "We need either 'curl' or 'wget' present in PATH to download external dependencies."
fi
}
2010-04-07 19:31:25 +02:00
check_unzip() {
2010-04-14 03:37:56 +02:00
UNZIP="`which unzip 2> /dev/null`"
2010-04-07 19:31:25 +02:00
2010-04-08 22:45:02 +02:00
if [ -z "$UNZIP" ]; then
2010-04-07 19:31:25 +02:00
error "We need 'unzip' present in PATH to expand external dependencies."
fi
}
2010-04-07 10:28:53 +02:00
check_python() {
2010-04-14 03:37:56 +02:00
PYTHON="`which python 2> /dev/null`"
2010-04-08 22:45:02 +02:00
if [ -z "$PYTHON" ]; then
2010-04-14 03:37:56 +02:00
error "This action requires you to have 'python' installed and present in your PATH. You can download it for free at http://www.python.org/"
2010-04-07 10:28:53 +02:00
fi
PYTHON_VERSION="`python --version 2>&1 | cut -f 2 -d ' ' | cut -f 1,2 -d .`"
2010-04-08 22:45:02 +02:00
if [ "$PYTHON_VERSION" != "2.5" -a "$PYTHON_VERSION" != "2.6" ]; then
2010-04-07 10:28:53 +02:00
error "This action requires python version 2.5.x or 2.6.x. You can download it for free at http://www.python.org/"
fi
}
2010-06-01 08:56:58 +02:00
check_pywin32() {
PYWIN32="`$PYTHON -c 'import win32api' 2>&1`"
if [ ! -z "$PYWIN32" ]; then
error "This action requires you to have 'pywin32' windows extensions for Python installed on your machine. You can download it for free at http://sourceforge.net/projects/pywin32/"
fi
}
2010-04-07 10:28:53 +02:00
check_running() {
check_downloaders
URL="http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/"
2010-04-08 22:45:02 +02:00
if [ "$CURL" ]; then
2010-04-07 10:28:53 +02:00
NOT_RUNNING=`curl -s $URL > /dev/null || echo not_running`
2010-04-08 22:45:02 +02:00
elif [ "$WGET" ]; then
2010-04-07 10:28:53 +02:00
NOT_RUNNING=`wget -q -O - $URL > /dev/null || echo not_running`
fi
}
2010-04-05 09:15:16 +02:00
get_version() {
2010-04-08 20:23:14 +02:00
VERSION="$1"
2010-02-09 21:21:10 +01:00
2010-04-08 22:45:02 +02:00
if [ -z "$VERSION" ]; then
2010-04-05 09:15:16 +02:00
fail "Must specify a version number"
2010-02-08 00:15:50 +01:00
fi
2010-05-13 00:57:31 +02:00
if [[ "${VERSION}" == *.*.*.* ]]; then
FULL_VERSION="${VERSION}"
elif [[ "${VERSION}" == *.*.* ]]; then
FULL_VERSION="${VERSION}.0"
elif [[ "${VERSION}" == *.* ]]; then
FULL_VERSION="${VERSION}.0.0"
else
FULL_VERSION="${VERSION}.0.0.0"
fi
2010-04-05 09:15:16 +02:00
NUM_VERSION=`echo $VERSION | sed 's/[a-zA-Z]//g'`
}
get_revision() {
if [ -d ".svn" ]; then
INFO=`svn info`
elif [ -d ".git" ]; then
INFO=`git svn info`
else
error "cannot obtain revision, exiting!"
2010-02-08 00:15:50 +01:00
fi
2010-04-05 09:15:16 +02:00
REVISION=`echo $INFO | sed 's/.*Revision: /r/' | sed 's/ .*//'`
2010-02-09 21:21:10 +01:00
}
2010-04-05 09:15:16 +02:00
download() {
URL=$1
DEST=$2
2010-04-07 10:28:53 +02:00
check_downloaders
2010-04-05 09:15:16 +02:00
2010-04-08 22:45:02 +02:00
if [ "$CURL" ]; then
2010-04-07 10:28:53 +02:00
curl -L -o $DEST $URL || exit "Error while downloading $URL"
2010-04-08 22:45:02 +02:00
elif [ "$WGET" ]; then
2010-04-07 10:28:53 +02:00
wget -O $DEST $URL || error "Error while downloading $URL"
2010-04-05 09:15:16 +02:00
fi
}
2010-04-07 01:28:52 +02:00
tool_download() {
URL=$1
FILE=$2
DIR=$3
cd $GRIDWORKS_TOOLS_DIR
2010-04-08 22:45:02 +02:00
if [ ! -f "$FILE" ]; then
2010-04-07 23:45:39 +02:00
download $URL $FILE
2010-04-07 19:40:55 +02:00
fi
2010-04-08 22:45:02 +02:00
if [ ! -d "$DIR" ]; then
if [ -z "`echo $FILE | sed 's@.*.tar.gz$@@' | sed 's@.*.tgz$@@'`" ]; then
2010-04-07 23:45:39 +02:00
tar xzf $FILE || error "Error while expanding $FILE"
fi
2010-04-08 22:45:02 +02:00
if [ -z "`echo $FILE | sed 's@.*.zip$@@'`" ]; then
2010-04-07 23:45:39 +02:00
check_unzip
$UNZIP -q $FILE || error "Error while expanding $FILE"
fi
2010-04-07 19:31:25 +02:00
fi
2010-04-07 01:28:52 +02:00
cd ..
}
2010-04-07 10:28:53 +02:00
load_data() {
FILE=$1
NAME=$2
2010-08-22 08:16:13 +02:00
URL="http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/command/core/create-project-from-upload"
2010-04-14 03:37:56 +02:00
CURL="`which curl 2> /dev/null`"
2010-04-07 10:28:53 +02:00
2010-04-08 22:45:02 +02:00
if [ -z "$CURL" ]; then
2010-04-07 10:28:53 +02:00
error "We need 'curl' present in PATH to upload data to gridworks."
else
curl -s -F "project-file=@$FILE" -F "project-name=$NAME" $URL > /dev/null || error "Error while uploading $FILE to Gridworks"
echo "Loaded $FILE as $NAME"
fi
}
2010-04-05 09:15:16 +02:00
# ----------------------------------------------------------------------------------------------
build_prepare() {
2010-04-08 22:45:02 +02:00
if [ ! -d $GRIDWORKS_BUILD_DIR ]; then
2010-04-07 10:28:53 +02:00
mkdir $GRIDWORKS_BUILD_DIR || error "Error while making directory $GRIDWORKS_BUILD_DIR"
2010-04-05 09:15:16 +02:00
fi
2010-02-09 21:21:10 +01:00
}
dist_prepare() {
2010-04-08 22:45:02 +02:00
if [ ! -d $GRIDWORKS_DIST_DIR ]; then
2010-04-07 10:28:53 +02:00
mkdir $GRIDWORKS_DIST_DIR || error "Error while making directory $GRIDWORKS_DIST_DIR"
2010-02-09 21:21:10 +01:00
fi
}
2010-04-05 09:15:16 +02:00
tools_prepare() {
2010-04-08 22:45:02 +02:00
if [ ! -d $GRIDWORKS_TOOLS_DIR ]; then
2010-04-07 10:28:53 +02:00
mkdir $GRIDWORKS_TOOLS_DIR || error "Error while making directory $GRIDWORKS_TOOLS_DIR"
2010-04-05 09:15:16 +02:00
fi
}
2010-06-09 00:27:59 +02:00
2010-04-05 09:15:16 +02:00
ant_prepare() {
2010-04-14 03:37:56 +02:00
tools_prepare
2010-05-10 17:52:45 +02:00
ANT_URL="http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.1-bin.tar.gz"
2010-04-05 09:15:16 +02:00
ANT_FILE=`echo $ANT_URL | sed 's|.*/||'`
2010-05-10 17:52:45 +02:00
ANT_DIR="apache-ant-1.8.1"
2010-04-05 09:15:16 +02:00
2010-04-14 03:37:56 +02:00
ANT="`which ant 2> /dev/null`"
2010-04-08 22:45:02 +02:00
if [ -z "$ANT" ]; then
if [ -z "$ANT_HOME" ]; then
2010-04-05 09:15:16 +02:00
cd $GRIDWORKS_TOOLS_DIR
2010-04-08 22:45:02 +02:00
if [ ! -f "$ANT_FILE" ]; then
2010-04-07 23:45:39 +02:00
download $ANT_URL $ANT_FILE
fi
2010-04-08 22:45:02 +02:00
if [ ! -d "$ANT_DIR" ]; then
2010-04-07 23:45:39 +02:00
tar xzf $ANT_FILE -C . || error "Error while expanding $ANT_FILE"
fi
export ANT_HOME="`pwd`/$ANT_DIR"
2010-04-14 03:37:56 +02:00
if $CYGWIN ; then
export ANT_HOME=`cygpath --unix "$ANT_HOME"`
fi
2010-04-05 09:15:16 +02:00
cd ..
fi
ANT="$ANT_HOME/bin/ant"
fi
}
2010-06-09 00:27:59 +02:00
appengine_prepare() {
if [ -z "$APPENGINE_HOME" ]; then
error "You have to have the APPENGINE_HOME environment variable set and pointing to the local installation of the Google AppEngine SDK."
elif [ ! -f "$APPENGINE_HOME/bin/appcfg.sh" ]; then
error "Environment variable APPENGINE_HOME is set to '$APPENGINE_HOME' which doesn't point to a valid Google App Engine SDK."
fi
APPENGINE="$APPENGINE_HOME/bin/appcfg.sh"
APPENGINE_LOCAL="$APPENGINE_HOME/bin/dev_appserver.sh"
ANT_PARAMS="$ANT_PARAMS -Dappengine.sdk.dir=$APPENGINE_HOME"
}
2010-02-10 08:30:16 +01:00
launch4j_prepare() {
2010-04-07 00:41:33 +02:00
tools_prepare
2010-04-05 09:15:16 +02:00
LAUNCH4J_URL="http://downloads.sourceforge.net/project/launch4j/launch4j-3/3.0.1/launch4j-3.0.1-macosx.tgz"
LAUNCH4J_FILE=`echo $LAUNCH4J_URL | sed 's|.*/||'`
2010-03-09 21:16:04 +01:00
LAUNCH4J_DIR="launch4j"
2010-04-05 09:15:16 +02:00
2010-04-07 01:28:52 +02:00
tool_download $LAUNCH4J_URL $LAUNCH4J_FILE $LAUNCH4J_DIR
2010-03-04 09:46:33 +01:00
}
2010-02-10 08:30:16 +01:00
2010-04-05 09:15:16 +02:00
jarbundler_prepare() {
2010-04-07 00:41:33 +02:00
tools_prepare
2010-04-05 09:15:16 +02:00
JARBUNDLER_URL="http://www.informagen.com/JarBundler/dist/jarbundler.tar.gz"
JARBUNDLER_FILE=`echo $JARBUNDLER_URL | sed 's|.*/||'`
JARBUNDLER_DIR="jarbundler-2.1.0"
2010-04-07 01:28:52 +02:00
tool_download $JARBUNDLER_URL $JARBUNDLER_FILE $JARBUNDLER_DIR
2010-02-25 00:52:20 +01:00
}
2010-04-05 09:15:16 +02:00
2010-04-07 23:45:39 +02:00
virtualenv_prepare() {
check_python
VIRTUALENV_URL="http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.4.6.tar.gz"
VIRTUALENV_FILE="virtualenv-1.4.6.tar.gz"
VIRTUALENV_DIR="virtualenv-1.4.6"
tool_download $VIRTUALENV_URL $VIRTUALENV_FILE $VIRTUALENV_DIR
2010-04-14 03:37:56 +02:00
PYTHON_LOCAL="$GRIDWORKS_TOOLS_DIR/python"
if $CYGWIN ; then
PYTHON_LOCAL="${PYTHON_LOCAL}_win"
2010-04-07 23:45:39 +02:00
fi
2010-04-14 03:37:56 +02:00
if [ ! -d "$PYTHON_LOCAL" ]; then
$PYTHON $GRIDWORKS_TOOLS_DIR/$VIRTUALENV_DIR/virtualenv.py $PYTHON_LOCAL
fi
PYTHON_HOME="`pwd`/$PYTHON_LOCAL"
if $CYGWIN ; then
PYTHON="$PYTHON_HOME/Scripts/python.exe"
PYTHON_INSTALL="$PYTHON_HOME/Scripts/easy_install.exe"
else
PYTHON="$PYTHON_HOME/bin/python"
PYTHON_INSTALL="$PYTHON_HOME/bin/easy_install"
fi
2010-04-07 23:45:39 +02:00
}
2010-04-07 01:28:52 +02:00
windmill_prepare() {
2010-04-14 03:37:56 +02:00
WINDMILL="`which windmill 2> /dev/null`"
2010-04-08 22:45:02 +02:00
if [ -z "$WINDMILL" ]; then
2010-04-07 10:28:53 +02:00
check_python
tools_prepare
2010-04-14 03:37:56 +02:00
virtualenv_prepare
2010-04-07 23:45:39 +02:00
2010-04-14 03:37:56 +02:00
if $CYGWIN ; then
2010-06-01 08:56:58 +02:00
check_pywin32
2010-04-14 03:37:56 +02:00
WINDMILL="$PYTHON_HOME/Scripts/windmill.exe"
else
WINDMILL="$PYTHON_HOME/bin/windmill"
fi
2010-04-08 22:45:02 +02:00
if [ ! -f "$WINDMILL" ]; then
2010-05-10 18:06:07 +02:00
"$PYTHON_INSTALL" windmill
2010-04-07 10:28:53 +02:00
fi
fi
2010-04-07 01:28:52 +02:00
}
2010-04-05 09:15:16 +02:00
findbugs_prepare() {
2010-04-07 00:41:33 +02:00
tools_prepare
2010-04-05 09:15:16 +02:00
FINDBUGS_URL="http://downloads.sourceforge.net/project/findbugs/findbugs/1.3.9/findbugs-1.3.9.tar.gz"
FINDBUGS_FILE=`echo $FINDBUGS_URL | sed 's|.*/||'`
FINDBUGS_DIR="findbugs-1.3.9"
2010-04-07 02:12:40 +02:00
tool_download $FINDBUGS_URL $FINDBUGS_FILE $FINDBUGS_DIR
2010-04-05 09:15:16 +02:00
}
2010-04-07 19:31:25 +02:00
pmd_prepare() {
tools_prepare
PMD_URL="http://downloads.sourceforge.net/project/pmd/pmd/4.2.5/pmd-bin-4.2.5.zip"
PMD_FILE="pmd-bin-4.2.5.zip"
PMD_DIR="pmd-4.2.5"
tool_download $PMD_URL $PMD_FILE $PMD_DIR
}
2010-04-07 21:05:04 +02:00
jslint_prepare() {
tools_prepare
JSLINT_URL="http://jslint4java.googlecode.com/files/jslint4java-1.3.3-dist.zip"
JSLINT_FILE="jslint4java-1.3.3-dist.zip"
JSLINT_DIR="jslint4java-1.3.3"
tool_download $JSLINT_URL $JSLINT_FILE $JSLINT_DIR
}
2010-06-09 00:27:59 +02:00
2010-04-05 09:15:16 +02:00
# ----------------------------------------------------------------------------------------------
2010-03-30 23:24:04 +02:00
2010-04-05 09:15:16 +02:00
ant() {
ant_prepare
2010-04-07 00:41:33 +02:00
2010-04-05 09:15:16 +02:00
#export ANT_OPTS="-Xmx1024M"
2010-04-07 00:41:33 +02:00
2010-05-29 01:19:08 +02:00
"$ANT" -f build.xml $ANT_PARAMS -Dversion="$VERSION" -Dnum_version="$NUM_VERSION" -Dfull_version="$FULL_VERSION" -Drevision="$REVISION" $1 || error "Error while running ant task '$1'"
2010-03-30 23:24:04 +02:00
}
2010-04-05 09:15:16 +02:00
# ----------------------------------------------------------------------------------------------
2010-03-30 23:24:04 +02:00
dist() {
2010-03-31 04:11:53 +02:00
mac_dist $1
windows_dist $1
linux_dist $1
2010-03-31 02:17:40 +02:00
2010-03-31 04:11:53 +02:00
echo "All distributions were built and are located at $GRIDWORKS_DIST_DIR"
2010-03-31 02:17:40 +02:00
echo
2010-03-31 04:11:53 +02:00
echo "Upload them to the distibution site, then prepend the GridworksReleases array at"
2010-03-31 02:17:40 +02:00
echo
2010-05-29 01:19:08 +02:00
echo " http://code.google.com/p/freebase-gridworks/source/browse/support/releases.js"
2010-03-31 02:17:40 +02:00
echo
echo "with"
echo
2010-05-13 01:25:54 +02:00
echo " {"
echo " \"description\": \"Gridworks ${VERSION}\","
echo " \"version\": \"${VERSION}\","
echo " \"revision\": \"${REVISION}\""
echo " },"
2010-03-31 02:17:40 +02:00
echo
2010-03-17 23:30:16 +01:00
}
2010-03-31 04:11:53 +02:00
windows_dist() {
2010-02-25 00:52:20 +01:00
check_macosx
dist_prepare
get_version $1
2010-03-30 23:24:04 +02:00
get_revision
2010-04-07 20:51:16 +02:00
launch4j_prepare
2010-02-25 00:52:20 +01:00
2010-04-05 09:15:16 +02:00
ANT_PARAMS="-Dlaunch4j.dir=${GRIDWORKS_TOOLS_DIR}/${LAUNCH4J_DIR}"
2010-03-31 04:11:53 +02:00
ant windows
2010-02-10 08:30:16 +01:00
}
2010-03-17 23:30:16 +01:00
2010-03-31 04:11:53 +02:00
linux_dist() {
2010-03-17 23:30:16 +01:00
dist_prepare
get_version $1
2010-03-30 23:24:04 +02:00
get_revision
2010-03-17 23:30:16 +01:00
2010-03-31 04:11:53 +02:00
ant linux
2010-03-17 23:30:16 +01:00
}
2010-02-10 08:30:16 +01:00
2010-03-31 04:11:53 +02:00
mac_dist() {
2010-02-09 21:21:10 +01:00
check_macosx
dist_prepare
2010-02-25 00:52:20 +01:00
get_version $1
2010-03-30 23:24:04 +02:00
get_revision
2010-04-07 20:51:16 +02:00
jarbundler_prepare
2010-02-09 21:21:10 +01:00
2010-04-05 09:15:16 +02:00
ANT_PARAMS="-Djarbundler.dir=${GRIDWORKS_TOOLS_DIR}/${JARBUNDLER_DIR}"
2010-04-07 10:28:53 +02:00
ant mac
2010-02-09 21:21:10 +01:00
2010-03-31 04:11:53 +02:00
mkdir -p "$GRIDWORKS_BUILD_DIR/mac/.background"
2010-05-29 01:19:08 +02:00
cp graphics/dmg_background/dmg_background.png "$GRIDWORKS_BUILD_DIR/mac/.background/dmg_background.png"
2010-02-09 21:21:10 +01:00
2010-05-28 01:29:32 +02:00
SIZE=60
2010-02-09 21:21:10 +01:00
2010-04-08 22:45:02 +02:00
if [ -f "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" ]; then
2010-04-07 02:12:40 +02:00
rm "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg"
fi
2010-02-09 21:21:10 +01:00
TITLE="Gridworks $VERSION"
echo "Building MacOSX DMG for $TITLE"
2010-04-07 02:12:40 +02:00
hdiutil create -srcfolder "$GRIDWORKS_BUILD_DIR/mac" -volname "$TITLE" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}m "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" || error "can't create empty DMG"
DEVICE=`hdiutil attach -readwrite -noverify -noautoopen "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" | egrep '^/dev/' | sed 1q | awk '{print $1}'`
2010-04-07 10:28:53 +02:00
hdiutil attach "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" || error "Can't attach temp DMG"
2010-02-08 00:15:50 +01:00
2010-02-09 21:21:10 +01:00
echo '
tell application "Finder"
tell disk "'$TITLE'"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
2010-02-25 00:28:24 +01:00
set the bounds of container window to {200, 100, 760, 460}
2010-02-09 21:21:10 +01:00
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 100
2010-08-21 00:24:02 +02:00
set background picture of theViewOptions to file ".background:dmg_background.png"
2010-02-09 21:21:10 +01:00
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
2010-08-21 00:24:02 +02:00
set position of item "Gridworks" of container window to {170, 175}
2010-02-25 00:28:24 +01:00
set position of item "Applications" of container window to {380, 175}
2010-02-09 21:21:10 +01:00
close
open
update without registering applications
2010-04-07 02:12:40 +02:00
delay 2
2010-02-09 21:21:10 +01:00
eject
end tell
end tell
2010-04-07 10:28:53 +02:00
' | osascript || error "Error running applescript"
2010-02-09 21:21:10 +01:00
sync
sync
2010-04-07 20:40:50 +02:00
hdiutil detach $DEVICE
2010-04-07 02:18:26 +02:00
2010-04-08 22:45:02 +02:00
if [ -f "$GRIDWORKS_DIST_DIR/gridworks-$VERSION-$REVISION.dmg" ]; then
2010-04-07 02:18:26 +02:00
rm "$GRIDWORKS_DIST_DIR/gridworks-$VERSION-$REVISION.dmg"
fi
2010-04-07 02:12:40 +02:00
hdiutil convert "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" -format UDZO -imagekey zlib-level=9 -o "$GRIDWORKS_DIST_DIR/gridworks-$VERSION-$REVISION.dmg" || error "Error compressing DMG"
hdiutil internet-enable -yes "$GRIDWORKS_DIST_DIR/gridworks-$VERSION-$REVISION.dmg" || error "Error internet-enabling DMG"
2010-04-07 02:18:26 +02:00
2010-02-09 21:21:10 +01:00
rm -f "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg"
2010-02-07 06:25:44 +01:00
}
2010-03-09 09:08:35 +01:00
test() {
2010-04-07 02:12:40 +02:00
server_test $1
2010-04-07 10:28:53 +02:00
ui_test $1
2010-04-07 02:12:40 +02:00
}
ui_test() {
2010-04-08 00:56:46 +02:00
INTERACTIVE=$1
2010-04-07 02:12:40 +02:00
windmill_prepare
2010-04-07 10:28:53 +02:00
2010-05-14 00:44:19 +02:00
GRIDWORKS_DATA_DIR="${TMPDIR}/gridworks-tests"
2010-04-07 10:28:53 +02:00
add_option "-Dgridworks.headless=true"
run fork
echo "Waiting for Gridworks to load..."
sleep 5
2010-04-14 03:37:56 +02:00
check_running
if [ ! -z "$NOT_RUNNING" ]; then
sleep 10
fi
2010-04-07 10:28:53 +02:00
echo "... proceed with the tests."
echo ""
load_data "$GRIDWORKS_TEST_DIR/data/food.csv" "Food"
sleep 3
echo ""
2010-05-31 19:56:07 +02:00
echo "Starting Windmill..."
2010-04-08 22:45:02 +02:00
if [ -z "$INTERACTIVE" ]; then
2010-05-31 19:56:07 +02:00
"$WINDMILL" firefox firebug loglevel=WARN http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/ jsdir=$GRIDWORKS_TEST_DIR/client/src exit
2010-04-08 00:56:46 +02:00
else
2010-05-14 00:44:19 +02:00
"$WINDMILL" firefox firebug loglevel=WARN http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/
2010-04-08 00:56:46 +02:00
fi
2010-04-07 10:28:53 +02:00
echo ""
echo "Killing Gridworks"
kill -9 $GRIDWORKS_PID
echo "Cleaning up"
rm -rf $GRIDWORKS_DATA_DIR
2010-04-07 02:12:40 +02:00
}
server_test() {
2010-05-12 00:38:03 +02:00
ant build_tests
echo ""
2010-03-09 09:08:35 +01:00
2010-05-29 01:19:08 +02:00
CLASSPATH="$GRIDWORKS_TEST_DIR/server/classes${SEP}$GRIDWORKS_WEBAPP/WEB-INF/classes${SEP}$GRIDWORKS_CLASSES_DIR${SEP}$GRIDWORKS_TEST_DIR/server/lib/*${SEP}$GRIDWORKS_LIB_DIR/*${SEP}$GRIDWORKS_WEBAPP/WEB-INF/lib/*"
2010-03-09 09:08:35 +01:00
2010-04-08 22:45:02 +02:00
if [ -z "$1" ]; then
2010-05-29 01:19:08 +02:00
TESTS="-excludegroups broken $GRIDWORKS_TEST_DIR/server/conf/tests.xml"
2010-03-09 09:08:35 +01:00
else
2010-05-16 20:42:52 +02:00
TESTS="-testclass $1"
2010-03-09 09:08:35 +01:00
fi
2010-05-16 20:42:52 +02:00
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS org.testng.TestNG -d $GRIDWORKS_BUILD_DIR/server_tests -listener org.testng.reporters.DotTestListener $TESTS"
2010-03-09 09:08:35 +01:00
2010-04-07 10:28:53 +02:00
#echo "$RUN_CMD"
#echo ""
2010-03-09 09:08:35 +01:00
2010-04-07 10:28:53 +02:00
$RUN_CMD || error "Failed passing server tests"
2010-03-09 09:08:35 +01:00
}
2010-06-25 08:52:12 +02:00
run() {
FORK=$1
2010-06-09 00:27:59 +02:00
2010-06-25 08:52:12 +02:00
check_running
2010-06-09 00:27:59 +02:00
2010-06-25 08:52:12 +02:00
if [ -z "$NOT_RUNNING" ]; then
warn "Gridworks is already running."
2010-06-09 00:27:59 +02:00
fi
2010-04-07 10:28:53 +02:00
2010-05-29 01:19:08 +02:00
if [ ! -d $GRIDWORKS_CLASSES_DIR ]; then
2010-04-08 20:23:14 +02:00
IS_JAR=`ls $GRIDWORKS_LIB_DIR | grep gridworks`
2010-04-08 22:45:02 +02:00
if [ -z "$IS_JAR" ]; then
2010-03-30 23:24:04 +02:00
ant build
echo ""
fi
2010-02-08 00:15:50 +01:00
fi
2010-06-25 08:52:12 +02:00
2010-05-29 01:19:08 +02:00
if [ -d $GRIDWORKS_CLASSES_DIR ]; then
2010-06-25 09:03:41 +02:00
add_option "-Dgridworks.autoreload=true -Dbutterfly.autoreload=true"
2010-04-03 03:28:54 +02:00
fi
2010-03-03 03:53:07 +01:00
2010-04-14 03:37:56 +02:00
if $DARWIN ; then
2010-05-29 01:19:08 +02:00
add_option "-Xdock:name=Gridworks -Xdock:icon=graphics/icon/gridworks.icns"
2010-03-03 03:53:07 +01:00
fi
2010-04-08 22:45:02 +02:00
if [ "$GRIDWORKS_DATA_DIR" ]; then
2010-04-03 03:28:54 +02:00
add_option "-Dgridworks.data_dir=$GRIDWORKS_DATA_DIR"
2010-03-03 03:53:07 +01:00
fi
2010-06-25 08:52:12 +02:00
if [ "$GRIDWORKS_WEBAPP" ]; then
add_option "-Dgridworks.webapp=$GRIDWORKS_WEBAPP"
fi
if [ "$GRIDWORKS_PORT" ]; then
add_option "-Dgridworks.port=$GRIDWORKS_PORT"
fi
if [ "$GRIDWORKS_HOST" ]; then
add_option "-Dgridworks.host=$GRIDWORKS_HOST"
fi
2010-05-29 01:19:08 +02:00
CLASSPATH="$GRIDWORKS_CLASSES_DIR${SEP}$GRIDWORKS_LIB_DIR/*"
2010-02-08 00:15:50 +01:00
2010-08-04 19:19:03 +02:00
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.google.gridworks.Gridworks"
2010-04-07 10:28:53 +02:00
#echo "$RUN_CMD"
2010-04-23 10:25:52 +02:00
#echo ""
2010-02-08 00:15:50 +01:00
echo "Starting Gridworks at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'"
echo ""
2010-04-08 22:45:02 +02:00
if [ -z "$FORK" ]; then
2010-04-07 19:31:25 +02:00
exec $RUN_CMD
2010-04-07 10:28:53 +02:00
else
2010-04-14 03:37:56 +02:00
$RUN_CMD &
2010-04-07 10:28:53 +02:00
GRIDWORKS_PID="$!"
fi
2010-02-08 00:15:50 +01:00
}
2010-06-25 08:52:12 +02:00
broker_build() {
build_prepare
get_revision
ant prepare_broker
}
broker_run() {
FORK=$1
GRIDWORKS_HOST=127.0.0.1
GRIDWORKS_PORT=3334
check_running
if [ -z "$NOT_RUNNING" ]; then
warn "Gridworks Broker is already running."
fi
if [ ! -d "broker/core/WEB-INF/lib" ]; then
broker_build
echo ""
fi
if [ -d $GRIDWORKS_CLASSES_DIR ]; then
2010-06-25 09:03:41 +02:00
add_option "-Dgridworks.autoreload=true -Dbutterfly.autoreload=true"
add_option "-Dgridworks.development=true"
2010-06-25 08:52:12 +02:00
fi
add_option "-Dgridworks.webapp=broker/core"
add_option "-Dgridworks.headless=true"
add_option "-Dgridworks.port=$GRIDWORKS_PORT"
add_option "-Dgridworks.host=0.0.0.0"
CLASSPATH="$GRIDWORKS_CLASSES_DIR${SEP}$GRIDWORKS_LIB_DIR/*"
2010-08-04 19:19:03 +02:00
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.google.gridworks.Gridworks"
2010-06-25 08:52:12 +02:00
#echo "$RUN_CMD"
#echo ""
echo "Starting Gridworks Broker at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'"
echo ""
if [ -z "$FORK" ]; then
exec $RUN_CMD
else
$RUN_CMD &
GRIDWORKS_PID="$!"
fi
}
broker_appengine_build() {
appengine_prepare
get_revision
ANT_PARAMS="-Dappengine.sdk.dir=${APPENGINE_HOME}"
if [ "$1" ]; then
ANT_PARAMS="$ANT_PARAMS -Dappengine.app_id=$1"
fi
if [ "$2" ]; then
ANT_PARAMS="$ANT_PARAMS -Dappengine.version=$2"
fi
ant prepare_broker_appengine
}
broker_appengine_upload() {
broker_appengine_build $1 $2
"$APPENGINE" update "$GRIDWORKS_BUILD_DIR/broker/appengine"
}
broker_appengine_run() {
broker_appengine_build $1 $2
"$APPENGINE_LOCAL" "$GRIDWORKS_BUILD_DIR/broker/appengine"
}
2010-04-05 09:15:16 +02:00
findbugs() {
findbugs_prepare
ANT_PARAMS="-Dfindbugs.dir=${GRIDWORKS_TOOLS_DIR}/${FINDBUGS_DIR}"
ant findbugs
2010-04-09 02:14:11 +02:00
open "$GRIDWORKS_BUILD_DIR/reports/findbugs.html"
2010-04-05 09:15:16 +02:00
}
2010-04-07 19:31:25 +02:00
pmd() {
pmd_prepare
ANT_PARAMS="-Dpmd.dir=${GRIDWORKS_TOOLS_DIR}/${PMD_DIR}"
ant pmd
2010-04-09 02:14:11 +02:00
open "$GRIDWORKS_BUILD_DIR/reports/pmd.html"
2010-04-07 19:31:25 +02:00
}
cpd() {
pmd_prepare
ANT_PARAMS="-Dpmd.dir=${GRIDWORKS_TOOLS_DIR}/${PMD_DIR}"
ant cpd
2010-04-09 02:14:11 +02:00
open "$GRIDWORKS_BUILD_DIR/reports/cpd.txt"
2010-04-07 19:31:25 +02:00
}
2010-04-07 21:05:04 +02:00
jslint() {
jslint_prepare
ANT_PARAMS="-Djslint.dir=${GRIDWORKS_TOOLS_DIR}/${JSLINT_DIR}"
ant jslint
2010-04-09 02:14:11 +02:00
open "$GRIDWORKS_BUILD_DIR/reports/jslint.txt"
2010-04-07 21:05:04 +02:00
}
2010-05-05 01:41:57 +02:00
whitespace() {
[ $# -gt 0 ] || usage
for i in `find . -name *.$1`; do
# expand tabs to spaces
expand -t 4 < $i > $i.1
# convert DOS to UNIX newlines
tr -d '\r' < $i.1 > $i.2
rm $i $i.1
mv $i.2 $i
done
}
2010-03-30 23:24:04 +02:00
# -------------------------- script -----------------------------
2010-02-08 00:15:50 +01:00
# ----- Normalize the current directory -------------------------
cd `dirname $0`
2010-03-30 23:24:04 +02:00
# ----- Default values ------------------------------------------
OPTS=""
2010-04-14 03:37:56 +02:00
# ---- OS-specific support --------------------------------------
2010-03-30 23:24:04 +02:00
SYSTEM=`uname`
2010-04-14 03:37:56 +02:00
CYGWIN=false
DARWIN=false
case "$SYSTEM" in
CYGWIN*) CYGWIN=true ;;
Darwin*) DARWIN=true ;;
esac
SEP=":"
if $CYGWIN ; then
SEP=";"
fi
2010-03-30 23:24:04 +02:00
# ----- Load configurations -------------------------------------
load_configs gridworks.ini
# ----- Make sure there is an appropriate java environment is available -------------
2010-04-12 06:24:17 +02:00
2010-04-14 03:37:56 +02:00
if $DARWIN ; then
if [ -z "$JAVA_HOME" ]; then
# Mac OS X defaults to Java 5. So update JAVA_HOME unless the user manually set it.
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home"
fi
fi
JAVA="`which java 2> /dev/null`"
if [ -z "$JAVA" ]; then
if [ "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
if [ ! -f "$JAVA" ] ; then
error "Could not find the 'java' executable at '$JAVA', are you sure your JAVA_HOME environment variable is pointing to a proper java installation?"
2010-02-08 00:15:50 +01:00
fi
2010-04-14 03:37:56 +02:00
else
error "The 'java' command should be in your path or the 'JAVA_HOME' environment variable should be set"
2010-02-08 00:15:50 +01:00
fi
fi
2010-04-14 00:14:02 +02:00
2010-04-12 06:24:17 +02:00
JAVA_VERSION=`$JAVA -version 2>&1 | grep version | cut -d ' ' -f 3 | egrep ^\"1\.6`
2010-04-08 22:45:02 +02:00
if [ -z "$JAVA_VERSION" ]; then
2010-04-14 00:14:02 +02:00
error "Gridworks requires Java version 6 or later. If you have multiple versions of Java installed, please set JAVA_HOME to the correct version."
2010-02-08 20:48:28 +01:00
fi
2010-02-08 00:15:50 +01:00
# ----- Parse the command line args ------------------------------------------
2010-02-07 06:25:44 +01:00
while [ $# -ne 0 ] ; do
2010-02-08 00:15:50 +01:00
case "$1" in
2010-03-17 02:51:29 +01:00
-h) usage;;
2010-02-08 00:15:50 +01:00
-p) shift; GRIDWORKS_PORT="$1"; shift; continue;;
-i) shift; GRIDWORKS_HOST="$1"; shift; continue;;
-w) shift; GRIDWORKS_WEBAPP="$1"; shift; continue;;
2010-03-03 03:53:07 +01:00
-d) shift; GRIDWORKS_DATA_DIR="$1"; shift; continue;;
2010-03-30 23:24:04 +02:00
-m) shift; GRIDWORKS_MEMORY="$1"; shift; continue;;
2010-04-23 10:25:52 +02:00
-v) shift; GRIDWORKS_VERBOSITY="$1"; shift; continue;;
2010-03-03 03:53:07 +01:00
--debug) shift; add_option '-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'; continue;;
--jmx) shift; add_option '-Dcom.sun.management.jmxremote'; continue;;
2010-02-08 00:15:50 +01:00
-*) fail "Invalid option: $1";;
*) break;;
2010-02-07 06:25:44 +01:00
esac
done
2010-04-08 22:45:02 +02:00
if [ $# -ne 0 ]; then
ACTION=$1; shift
fi
2010-02-08 00:15:50 +01:00
2010-04-08 20:23:14 +02:00
if [ -z "$ACTION" ]; then
2010-03-31 04:11:53 +02:00
ACTION="run"
fi
2010-02-07 06:25:44 +01:00
# ----- Verify and Set Required Environment Variables -------------------------
2010-04-08 22:45:02 +02:00
if [ -z "$JAVA_OPTIONS" ]; then
2010-03-30 23:24:04 +02:00
JAVA_OPTIONS=""
2010-02-07 06:25:44 +01:00
fi
add_option "$JAVA_OPTIONS"
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_MEMORY" ]; then
2010-04-05 23:09:34 +02:00
GRIDWORKS_MEMORY="1024M"
2010-03-30 23:24:04 +02:00
fi
2010-09-01 02:23:56 +02:00
add_option "-Xms256M -Xmx$GRIDWORKS_MEMORY -Dgridworks.memory=$GRIDWORKS_MEMORY -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled"
2010-03-30 23:24:04 +02:00
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_PORT" ]; then
2010-02-07 06:25:44 +01:00
GRIDWORKS_PORT="3333"
fi
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_HOST" ]; then
2010-02-08 00:15:50 +01:00
GRIDWORKS_HOST="127.0.0.1"
fi
2010-02-07 06:25:44 +01:00
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_WEBAPP" ]; then
2010-05-29 01:19:08 +02:00
GRIDWORKS_WEBAPP="main/webapp"
2010-02-07 06:25:44 +01:00
fi
2010-02-08 00:15:50 +01:00
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_TEST_DIR" ]; then
2010-05-29 01:19:08 +02:00
GRIDWORKS_TEST_DIR="main/tests"
2010-03-09 09:08:35 +01:00
fi
2010-05-29 01:19:08 +02:00
if [ -z "$GRIDWORKS_CLASSES_DIR" ]; then
GRIDWORKS_CLASSES_DIR="server/classes"
2010-02-08 00:15:50 +01:00
fi
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_LIB_DIR" ]; then
2010-05-29 01:19:08 +02:00
GRIDWORKS_LIB_DIR="server/lib"
fi
if [ -z "$GRIDWORKS_BUILD_DIR" ]; then
GRIDWORKS_BUILD_DIR="build"
2010-02-08 00:15:50 +01:00
fi
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_TOOLS_DIR" ]; then
2010-04-05 09:15:16 +02:00
GRIDWORKS_TOOLS_DIR="tools"
fi
2010-04-08 22:45:02 +02:00
if [ -z "$GRIDWORKS_DIST_DIR" ]; then
2010-02-09 21:21:10 +01:00
GRIDWORKS_DIST_DIR="dist"
fi
2010-02-08 00:15:50 +01:00
2010-04-23 10:25:52 +02:00
if [ -z "$GRIDWORKS_VERBOSITY" ]; then
GRIDWORKS_VERBOSITY="info"
fi
add_option "-Dgridworks.verbosity=$GRIDWORKS_VERBOSITY"
2010-04-21 02:18:31 +02:00
if [ -z "$JYTHONPATH" ]; then
2010-05-29 01:19:08 +02:00
JYTHONPATH="$GRIDWORKS_WEBAPP/WEB-INF/lib/jython"
2010-04-21 02:18:31 +02:00
else
2010-05-29 01:19:08 +02:00
JYTHONPATH="$GRIDWORKS_WEBAPP/WEB-INF/lib/jython${SEP}$JYTHONPATH"
2010-04-20 20:50:24 +02:00
fi
2010-04-21 02:18:31 +02:00
add_option "-Dpython.path=$JYTHONPATH"
2010-04-20 20:50:24 +02:00
2010-02-08 00:15:50 +01:00
# ----- Respond to the action given --------------------------------------------
2010-02-07 06:25:44 +01:00
case "$ACTION" in
2010-04-05 09:15:16 +02:00
build) build_prepare; ant build;;
clean) ant clean;;
2010-05-05 01:41:57 +02:00
whitespace) whitespace $1;;
2010-04-05 09:15:16 +02:00
distclean) ant distclean;;
test) test $1;;
2010-04-07 23:45:39 +02:00
tests) test $1;;
2010-04-07 02:12:40 +02:00
ui_test) ui_test $1;;
2010-04-07 23:45:39 +02:00
ui_tests) ui_test $1;;
2010-04-07 02:12:40 +02:00
server_test) server_test $1;;
2010-04-07 23:45:39 +02:00
server_tests) server_test $1;;
2010-04-05 09:15:16 +02:00
findbugs) findbugs;;
2010-04-07 19:31:25 +02:00
pmd) pmd;;
cpd) cpd;;
2010-04-07 21:05:04 +02:00
jslint) jslint;;
2010-04-05 09:15:16 +02:00
run) run;;
2010-06-25 08:52:12 +02:00
broker) broker_run;;
broker_appengine_run) broker_appengine_run $1 $2;;
broker_appengine_upload) broker_appengine_upload $1 $2;;
2010-04-05 09:15:16 +02:00
mac_dist) mac_dist $1;;
windows_dist) windows_dist $1;;
linux_dist) linux_dist $1;;
dist) dist $1;;
*) usage; ;;
2010-02-07 06:25:44 +01:00
esac