e1d064f25c
git-svn-id: http://google-refine.googlecode.com/svn/trunk@310 7d457c2a-affb-35e4-300a-418c747d4874
394 lines
9.8 KiB
Bash
Executable File
394 lines
9.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
##########################################################
|
|
# Gridworks Control System #
|
|
##########################################################
|
|
|
|
fail () {
|
|
cat <<EOF
|
|
ERROR: $1
|
|
Type '$0 -h' for usage information.
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
error() {
|
|
echo "$1"
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: $0 [options] <action>
|
|
where [options] include:
|
|
|
|
-h print this message and exit
|
|
|
|
-p <port> the port that gridworks will listen to
|
|
default: 3333
|
|
|
|
-i <interface> the host interface gridworks should bind to
|
|
default: 127.0.0.1
|
|
|
|
-w <path> path to the webapp
|
|
default: src/main/webapp
|
|
|
|
-d <path> path to the data directory
|
|
default: OS dependent
|
|
|
|
--debug enable JVM debugging (on port 8000)
|
|
|
|
--jmx enable JMX monitoring (for jconsole)
|
|
|
|
and <action> is one of
|
|
|
|
build ..................... Build Gridworks
|
|
run ....................... Run Gridworks
|
|
|
|
test ...................... Test Gridworks
|
|
|
|
make_dmg <version> ........ Make MacOSX DMG distribution
|
|
make_exe <version> ........ Make Windows EXE distribution
|
|
|
|
clean ..................... Clean compiled classes
|
|
distclean ................. Remove all generated files
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
add_option() {
|
|
OPTS="$OPTS $1"
|
|
}
|
|
|
|
OPTS="$GRIDWORKS_OPTS"
|
|
|
|
# Normalize the current directory
|
|
cd `dirname $0`
|
|
|
|
SYSTEM=`uname`
|
|
|
|
if [ "$SYSTEM" == "Darwin" ] && [ "$JAVA_HOME" == "" ] ; then
|
|
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home"
|
|
fi
|
|
|
|
# ----- actions -------------------------------------------------
|
|
|
|
check_macosx() {
|
|
if [ "$SYSTEM" != 'Darwin' ] ; then
|
|
error "This action can only run on MacOSX"
|
|
fi
|
|
}
|
|
|
|
ant_prepare() {
|
|
if [ ! -d $GRIDWORKS_BUILD_DIR ] ; then
|
|
mkdir $GRIDWORKS_BUILD_DIR || exit 1
|
|
fi
|
|
|
|
ANT=`which ant`
|
|
if [ "$ANT" = "" ] ; then
|
|
cd thirdparty
|
|
ANT_TAR=`ls | grep apache-ant | grep tar.gz | grep -v svn`
|
|
ANT_DIR=`echo $ANT_TAR | sed 's/.tar.gz//'`
|
|
if [ ! -d $ANT_DIR ] ; then
|
|
tar xzf $ANT_TAR -C . || exit 1
|
|
fi
|
|
ANT="`pwd`/$ANT_DIR/bin/ant"
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
ant() {
|
|
ant_prepare
|
|
echo $NUM_VERSION
|
|
$ANT -f build.xml -Dbuild.dir="$GRIDWORKS_BUILD_DIR" -Ddist.dir="$GRIDWORKS_DIST_DIR" -Dversion="$VERSION" -Dnum_version="$NUM_VERSION" -Djava.options="$JAVA_OPTIONS" $1 || exit 1
|
|
}
|
|
|
|
dist_prepare() {
|
|
if [ ! -d $GRIDWORKS_DIST_DIR ] ; then
|
|
mkdir $GRIDWORKS_DIST_DIR || exit 1
|
|
fi
|
|
}
|
|
|
|
launch4j_prepare() {
|
|
cd thirdparty
|
|
LAUNCH4J_TAR=`ls | grep launch4j | grep tar.gz | grep -v svn`
|
|
LAUNCH4J_DIR="launch4j"
|
|
if [ ! -d "$LAUNCH4J_DIR" ] ; then
|
|
tar xzf $LAUNCH4J_TAR -C thirdparty || exit 1
|
|
fi
|
|
cd ..
|
|
}
|
|
|
|
protobuf_prepare() {
|
|
cd thirdparty
|
|
PROTOBUF_TAR=`ls | grep protobuf | grep tar.gz | grep -v svn`
|
|
PROTOBUF_DIR=`echo $PROTOBUF_TAR | sed 's/.tar.gz//'`
|
|
PROTOC="`pwd`/$PROTOBUF_DIR/bin/protoc"
|
|
if [ ! -f $PROTOC ] ; then
|
|
tar xzf $PROTOBUF_TAR -C . || exit 1
|
|
cd $PROTOBUF_DIR
|
|
./configure --prefix=`pwd`
|
|
make
|
|
make install
|
|
cd ..
|
|
fi
|
|
PROTOC="`pwd`/$PROTOBUF_DIR/bin/protoc"
|
|
cd ..
|
|
}
|
|
|
|
get_version() {
|
|
VERSION=$1
|
|
|
|
if [ "$VERSION" == "" ] ; then
|
|
fail "Must specify a version number"
|
|
fi
|
|
|
|
NUM_VERSION=`echo $VERSION | sed 's/[a-zA-Z]//g'`
|
|
}
|
|
|
|
make_exe() {
|
|
check_macosx
|
|
dist_prepare
|
|
launch4j_prepare
|
|
get_version $1
|
|
|
|
ant exe
|
|
}
|
|
|
|
make_dmg() {
|
|
check_macosx
|
|
dist_prepare
|
|
get_version $1
|
|
|
|
ant bundle
|
|
|
|
mkdir "$GRIDWORKS_BUILD_DIR/bundle/.background"
|
|
cp src/graphics/dmg_background/dmg_background.png "$GRIDWORKS_BUILD_DIR/bundle/.background/dmg_background.png"
|
|
|
|
SIZE=30
|
|
|
|
TITLE="Gridworks $VERSION"
|
|
echo "Building MacOSX DMG for $TITLE"
|
|
hdiutil create -srcfolder "$GRIDWORKS_BUILD_DIR/bundle" -volname "$TITLE" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}m "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg"
|
|
DEVICE=$(hdiutil attach -readwrite -noverify -noautoopen "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" | egrep '^/dev/' | sed 1q | awk '{print $1}')
|
|
hdiutil attach "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg"
|
|
|
|
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
|
|
set the bounds of container window to {200, 100, 760, 460}
|
|
set theViewOptions to the icon view options of container window
|
|
set arrangement of theViewOptions to not arranged
|
|
set icon size of theViewOptions to 100
|
|
set background picture of theViewOptions to file ".background:'dmg_background.png'"
|
|
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
|
|
set position of item "'Gridworks'" of container window to {170, 175}
|
|
set position of item "Applications" of container window to {380, 175}
|
|
close
|
|
open
|
|
update without registering applications
|
|
delay 2
|
|
eject
|
|
end tell
|
|
end tell
|
|
' | osascript
|
|
|
|
chmod -Rf go-w /Volumes/Gridworks
|
|
sync
|
|
sync
|
|
hdiutil detach $DEVICE
|
|
hdiutil convert "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg" -format UDZO -imagekey zlib-level=9 -o "$GRIDWORKS_DIST_DIR/gridworks-$VERSION.dmg"
|
|
hdiutil internet-enable -yes "$GRIDWORKS_DIST_DIR/gridworks-$VERSION.dmg"
|
|
rm -f "$GRIDWORKS_BUILD_DIR/temp_gridworks.dmg"
|
|
}
|
|
|
|
test() {
|
|
if [ ! -d $GRIDWORKS_TEST_DIR/classes ] ; then
|
|
ant build_tests
|
|
echo ""
|
|
fi
|
|
|
|
CLASSPATH="$GRIDWORKS_BUILD_DIR/classes:$GRIDWORKS_TEST_DIR/classes:$GRIDWORKS_TEST_DIR/lib/*:$GRIDWORKS_LIB_DIR/*"
|
|
|
|
if [ "$1" == "" ] ; then
|
|
cd $GRIDWORKS_TEST_DIR/classes
|
|
TESTS=`find . -name '*.class' | sed s@/@.@g | sed s@.class@@ | sed s@..@@`
|
|
cd ../..
|
|
else
|
|
TESTS=$1
|
|
fi
|
|
|
|
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS org.junit.runner.JUnitCore $TESTS"
|
|
|
|
echo "$RUN_CMD"
|
|
echo ""
|
|
|
|
exec $RUN_CMD
|
|
}
|
|
|
|
run() {
|
|
if [ ! -d $GRIDWORKS_BUILD_DIR/classes ] ; then
|
|
ant build
|
|
echo ""
|
|
fi
|
|
|
|
if [ "$SYSTEM" == 'Darwin' ] ; then
|
|
OPTS="-Xdock:name=Gridworks -Xdock:icon=src/graphics/icon/gridworks.icns $OPTS"
|
|
fi
|
|
|
|
if [ "$GRIDWORKS_DATA_DIR" != "" ] ; then
|
|
OPTS="-Dgridworks.data_dir=$GRIDWORKS_DATA_DIR $OPTS"
|
|
fi
|
|
|
|
CLASSPATH="$GRIDWORKS_BUILD_DIR/classes:$GRIDWORKS_LIB_DIR/*"
|
|
|
|
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.metaweb.gridworks.Gridworks"
|
|
|
|
echo "Starting Gridworks at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'"
|
|
echo ""
|
|
#echo "$RUN_CMD"
|
|
#echo ""
|
|
|
|
exec $RUN_CMD
|
|
}
|
|
|
|
execute() {
|
|
if [ ! -d $GRIDWORKS_BUILD_DIR/classes ] ; then
|
|
ant build
|
|
echo ""
|
|
fi
|
|
|
|
CLASSPATH="$GRIDWORKS_BUILD_DIR/classes:$GRIDWORKS_LIB_DIR/*"
|
|
|
|
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS $*"
|
|
|
|
echo "$RUN_CMD"
|
|
echo ""
|
|
|
|
exec $RUN_CMD $*
|
|
}
|
|
|
|
# ----- We called without arguments print the usage -------------
|
|
|
|
[ $# -gt 0 ] || usage
|
|
|
|
# ----- Normalize the current directory -------------------------
|
|
|
|
cd `dirname $0`
|
|
|
|
# ----- Make sure there is a java environment installed -------------------------
|
|
|
|
if [ ! -z "$JAVA_HOME" ] ; then
|
|
JAVA="$JAVA_HOME/bin/java"
|
|
else
|
|
JAVA=`which java`
|
|
if [ -z "$JAVA" ] ; then
|
|
if [ "$SYSTEM" = 'Darwin' ] ; then
|
|
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
|
|
else
|
|
error "The 'java' command should be in your path or the 'JAVA_HOME' environment variable should be set"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
JAVA_VERSION=`java -version 2>&1 | grep version | cut -d ' ' -f 3 | egrep ^\"1.6`
|
|
if [ -z "$JAVA_VERSION" ] ; then
|
|
error "Gridworks requires java version 6 or later."
|
|
fi
|
|
|
|
# ----- Parse the command line args ------------------------------------------
|
|
|
|
while [ $# -ne 0 ] ; do
|
|
case "$1" in
|
|
-h) usage;;
|
|
-p) shift; GRIDWORKS_PORT="$1"; shift; continue;;
|
|
-i) shift; GRIDWORKS_HOST="$1"; shift; continue;;
|
|
-w) shift; GRIDWORKS_WEBAPP="$1"; shift; continue;;
|
|
-d) shift; GRIDWORKS_DATA_DIR="$1"; shift; continue;;
|
|
--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;;
|
|
-*) fail "Invalid option: $1";;
|
|
*) break;;
|
|
esac
|
|
done
|
|
|
|
ACTION=$1; shift
|
|
|
|
# ----- Verify and Set Required Environment Variables -------------------------
|
|
|
|
if [ "$JAVA_OPTIONS" == "" ] ; then
|
|
JAVA_OPTIONS="-Xms256M -Xmx1024M -XX:+UseParallelGC"
|
|
fi
|
|
add_option "$JAVA_OPTIONS"
|
|
|
|
if [ "$GRIDWORKS_PORT" == "" ] ; then
|
|
GRIDWORKS_PORT="3333"
|
|
fi
|
|
add_option "-Dgridworks.port=$GRIDWORKS_PORT"
|
|
|
|
if [ "$GRIDWORKS_HOST" == "" ] ; then
|
|
GRIDWORKS_HOST="127.0.0.1"
|
|
fi
|
|
add_option "-Dgridworks.host=$GRIDWORKS_HOST"
|
|
|
|
if [ "$GRIDWORKS_WEBAPP" == "" ] ; then
|
|
GRIDWORKS_WEBAPP="src/main/webapp"
|
|
fi
|
|
add_option "-Dgridworks.webapp=$GRIDWORKS_WEBAPP"
|
|
|
|
if [ "$GRIDWORKS_TEST_DIR" == "" ] ; then
|
|
GRIDWORKS_TEST_DIR="tests"
|
|
fi
|
|
|
|
if [ "$GRIDWORKS_BUILD_DIR" == "" ] ; then
|
|
GRIDWORKS_BUILD_DIR="build"
|
|
fi
|
|
|
|
if [ "$GRIDWORKS_LIB_DIR" == "" ] ; then
|
|
GRIDWORKS_LIB_DIR="lib"
|
|
fi
|
|
|
|
if [ "$GRIDWORKS_DIST_DIR" == "" ] ; then
|
|
GRIDWORKS_DIST_DIR="dist"
|
|
fi
|
|
|
|
# ----- Respond to the action given --------------------------------------------
|
|
|
|
case "$ACTION" in
|
|
|
|
build)
|
|
ant build;;
|
|
|
|
bundle)
|
|
ant bundle;;
|
|
|
|
clean)
|
|
ant clean;;
|
|
|
|
distclean)
|
|
ant distclean;;
|
|
|
|
test)
|
|
test $1;;
|
|
|
|
run)
|
|
run;;
|
|
|
|
execute)
|
|
execute $*;;
|
|
|
|
make_dmg)
|
|
make_dmg $1;;
|
|
|
|
make_exe)
|
|
make_exe $1;;
|
|
|
|
*)
|
|
usage; ;;
|
|
esac
|