Rename mir-prepare, mir-setup, mir-choose-java to mir-*.lenny.
[mir.git] / scripts / mir-setup / mir-choose-java.squeeze
diff --git a/scripts/mir-setup/mir-choose-java.squeeze b/scripts/mir-setup/mir-choose-java.squeeze
new file mode 100755 (executable)
index 0000000..2560f97
--- /dev/null
@@ -0,0 +1,142 @@
+#!/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!"