--- /dev/null
+#!/bin/sh
+# ianb@erislabs.net 20081202
+# configure a mir system for sun or gcj java
+# checkpoint code taken from zak's mir-setup
+
+set -e
+
+# NAME is used when called from mir-prepare
+NAME=""
+
+CUR_CHECKPOINT=0
+checkpoint()
+{
+ CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
+ if [ -n "$START_CHECKPOINT" ]; then
+ if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
+ echo "${NAME}Skipping checkpoint $CUR_CHECKPOINT: $@"
+ unset RUNNING
+ else
+ echo "${NAME}Running from checkpoint $CUR_CHECKPOINT: $@"
+ RUNNING=1
+ fi
+ else
+ echo "${NAME}Checkpoint $CUR_CHECKPOINT: $@"
+ RUNNING=1
+ fi
+}
+
+optdie()
+{
+ echo >&2 "$@";
+ echo >&2 "Try $PROG --help";
+ exit 1;
+}
+
+usage() {
+ echo >&2 "Usage: $PROG [options] sun|gcj"
+ echo >&2 " Configures java implementation to use with mir"
+ echo >&2 " -d|--debug Debugging output, including 'set -x' shell trace"
+ echo >&2 " -p|--checkpoint <start> Run from specified checkpoint after failed run"
+ echo >&2 " sun Use Sun Java (non-free)"
+ echo >&2 " gcj Use the GNU Java Compiler"
+}
+
+if [ $# -lt 1 ]
+then
+ usage
+ exit 1
+fi
+
+while [ $# != 0 ]; do
+ case "$1" in
+ -d|--debug) set -x; DEBUG=1 ;;
+ -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+ --subprocess) NAME="[mir-choose-java] " ;;
+ -h|-?|--help) usage; exit 0 ;;
+ -*) optdie "$PROG: unknown option $1" ;;
+ sun) JAVA=sun ; break;;
+ gcj) JAVA=gcj ; break;;
+ *) optdie "$PROG: unexpected argument '$1'" ;;
+ esac
+ shift
+done
+
+if [ $JAVA = sun ]
+then
+ JAVANAME=java-6-sun
+ PACKAGES="sun-java6-jdk sun-java6-jre"
+ RTPATH=/usr/lib/jvm/java-6-sun/jre/lib/rt.jar
+else
+ JAVANAME=java-gcj
+ PACKAGES=gcj
+ RTPATH=/usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib/rt.jar
+fi
+
+JAVAHOME="/usr/lib/jvm/$JAVANAME"
+
+if [ $JAVA = sun ]
+then
+ checkpoint "Adding non-free archive for sun java"
+ if [ -n "$RUNNING" ]
+ then
+ perl -pi.bak -e \
+ 'if(/^deb/ && !/security\.debian\.org/ && !/non-free/) { s/(main)/$1 contrib non-free/; }' \
+ /etc/apt/sources.list
+ apt-get update
+ fi
+else
+ # so checkpoint numbers don't differ
+ checkpoint "Skipping non-free archive configuration - gcj is in main"
+fi
+
+checkpoint "Installing packages"
+if [ -n "$RUNNING" ]
+then
+ apt-get install $PACKAGES
+ echo "You probably want to do 'apt-get clean'"
+fi
+
+checkpoint "Selecting JDK"
+if [ -n "$RUNNING" ]
+then
+ update-java-alternatives --set $JAVANAME || true
+fi
+
+checkpoint "Configuring apache jakarta JVM"
+if [ -n "$RUNNING" ]
+then
+ if grep -q '^workers.java_home' /etc/libapache2-mod-jk/workers.properties
+ then
+ perl -pi.bak -e 's,workers.java_home.*,workers.java_home='"$JAVAHOME"',;' \
+ /etc/libapache2-mod-jk/workers.properties
+ fi
+fi
+
+checkpoint "Configuring tomcat JVM"
+if [ -n "$RUNNING" ]
+then
+ TOMCATDEFAULTS=/etc/default/tomcat6
+ if grep -q '^#\?JAVA_HOME' $TOMCATDEFAULTS
+ then
+ perl -pi.bak -e 's,^\#?JAVA_HOME.*,JAVA_HOME='"$JAVAHOME"',;' $TOMCATDEFAULTS
+ else
+ echo "JAVA_HOME=$JAVAHOME" >> $TOMCATDEFAULTS
+ fi
+fi
+
+checkpoint "Configuring /etc/mir-setup/lib/rt.jar symlink"
+if [ -n "$RUNNING" ]
+then
+ mkdir -p /etc/mir-setup/lib
+ ln -sf $RTPATH /etc/mir-setup/lib/rt.jar
+fi
+
+checkpoint "Restarting tomcat and apache"
+if [ -n "$RUNNING" ]
+then
+ invoke-rc.d tomcat6 force-reload
+ invoke-rc.d apache2 force-reload
+fi
+
+checkpoint "Finished!"