diff --git a/build.xml b/build.xml index 8e49d4a9f..c28735358 100644 --- a/build.xml +++ b/build.xml @@ -11,9 +11,17 @@ + - + + + + @@ -28,12 +36,49 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/gridworks b/gridworks index eb6488406..88891cf15 100755 --- a/gridworks +++ b/gridworks @@ -4,12 +4,16 @@ # Gridworks Control System # ########################################################## -fail() { - cat < - -h for more details +Type '$0 -h' for usage information. EOF +exit 1 +} + +error() { + echo "$1" exit 1 } @@ -35,11 +39,16 @@ where [options] include: and is one of - build ..... Build Gridworks - run ....... Run Gridworks + build ..................... Build Gridworks + run ....................... Run Gridworks + + make_dmg ........ Make MacOSX DMG distribution + + clean ..................... Clean compiled classes + distclean ................. Remove all generated files EOF - exit 0 + exit 1 } add_option() { @@ -48,9 +57,17 @@ add_option() { OPTS="$GRIDWORKS_OPTS" +SYSTEM=`uname` + # ----- actions ------------------------------------------------- -build() { +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 @@ -64,19 +81,84 @@ build() { tar xzf $ANT_TAR -C $BUILD_DIR || exit 1 fi fi +} + +ant() { + ant_prepare + $ANT -f build.xml -Dbuild.dir="$GRIDWORKS_BUILD_DIR" -Ddist.dir="$GRIDWORKS_DIST_DIR" -Dversion="$VERSION" $1 || exit 1 +} + +dist_prepare() { + if [ ! -d $GRIDWORKS_DIST_DIR ] ; then + mkdir $GRIDWORKS_DIST_DIR || exit 1 + fi +} + +make_dmg() { + check_macosx + dist_prepare + + VERSION=$1 + + if [ "$VERSION" == "" ] ; then + fail "Must specify a version number" + fi - $ANT -f build.xml compile || exit 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, 945, 461} + 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 {450, 150} + set position of item "Applications" of container window to {600, 150} + 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" } run() { if [ ! -d $GRIDWORKS_BUILD_DIR/classes ] ; then - build + ant build echo "" fi CLASSPATH="$GRIDWORKS_BUILD_DIR/classes:$GRIDWORKS_LIB_DIR/*" - RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.metaweb.gridworks.Gridworks" + RUN_CMD="$JAVA -cp $CLASSPATH $OPTS -Xdock:name=Gridworks -Xdock:icon=src/graphics/icon/gridworks.icns com.metaweb.gridworks.Gridworks" echo "Starting Gridworks at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'" echo "" @@ -101,21 +183,17 @@ if [ ! -z "$JAVA_HOME" ] ; then else JAVA=`which java` if [ -z "$JAVA" ] ; then - system=`uname` - - if [ "$system" = 'Darwin' ] ; then + if [ "$SYSTEM" = 'Darwin' ] ; then JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home else - echo "The 'java' command should be in your path or the 'JAVA_HOME' environment variable should be set" - exit 1 + 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 - echo "Gridworks requires java version 6 or later." - exit 1 + error "Gridworks requires java version 6 or later." fi # ----- Parse the command line args ------------------------------------------ @@ -137,7 +215,7 @@ ACTION=$1; shift # ----- Verify and Set Required Environment Variables ------------------------- if [ "$JAVA_OPTIONS" == "" ] ; then - JAVA_OPTIONS="-Xms256M -Xmx1024M" + JAVA_OPTIONS="-Xms256M -Xmx1024M -XX:+UseLargePages -XX:+UseConcMarkSweepGC -XX:+UseParallelGC" fi add_option "$JAVA_OPTIONS" @@ -164,16 +242,31 @@ 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) - build;; + ant compile;; + + bundle) + ant bundle;; + + clean) + ant clean;; + + distclean) + ant distclean;; run) run;; + make_dmg) + make_dmg $1;; + *) usage; ;; esac diff --git a/src/graphics/dmg_background/dmg_background.png b/src/graphics/dmg_background/dmg_background.png new file mode 100644 index 000000000..aff1485f4 Binary files /dev/null and b/src/graphics/dmg_background/dmg_background.png differ diff --git a/src/graphics/icon/gridworks.icns b/src/graphics/icon/gridworks.icns new file mode 100644 index 000000000..3c2a4b205 Binary files /dev/null and b/src/graphics/icon/gridworks.icns differ diff --git a/src/graphics/icon/gridworks.psd b/src/graphics/icon/gridworks.psd new file mode 100644 index 000000000..bbf59d62c Binary files /dev/null and b/src/graphics/icon/gridworks.psd differ