Author: eevans Date: Wed Aug 18 21:09:55 2010 New Revision: 986939 URL: http://svn.apache.org/viewvc?rev=986939&view=rev Log: refactor assigment of JAVA_HOME in init script
Path by eevans; review by Brandon Williams for CASSANDRA-1407 Modified: cassandra/trunk/debian/init Modified: cassandra/trunk/debian/init URL: http://svn.apache.org/viewvc/cassandra/trunk/debian/init?rev=986939&r1=986938&r2=986939&view=diff ============================================================================== --- cassandra/trunk/debian/init (original) +++ cassandra/trunk/debian/init Wed Aug 18 21:09:55 2010 @@ -22,16 +22,8 @@ JVM_MAX_MEM="1G" JVM_START_MEM="128M" JMX_PORT="8080" -# The first existing directory is used for JAVA_HOME -JDK_DIRS="/usr/lib/jvm/java-6-sun /usr/lib/jvm/java-6-openjdk" - -# Look for the right JVM to use -for jdir in $JDK_DIRS; do - if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then - JAVA_HOME="$jdir" - fi -done - +# The first existing directory is used for JAVA_HOME if needed. +JVM_SEARCH_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun" [ -e /usr/share/cassandra/apache-cassandra.jar ] || exit 0 [ -e /etc/cassandra/cassandra.yaml ] || exit 0 @@ -39,6 +31,33 @@ done # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME +# If JAVA_HOME has not been set, try to determine it. +if [ -z "$JAVA_HOME" ]; then + # If java is in PATH, use a JAVA_HOME that corresponds to that. This is + # both consistent with how the upstream startup script works, and how + # Debian works (read: the use of alternatives to set a system JVM). + if [ -n `which java` ]; then + java=`which java` + # Dereference symlink(s) + while true; do + if [ -h "$java" ]; then + java=`readlink "$java"` + continue + fi + break + done + JAVA_HOME="`dirname $java`/../" + # No JAVA_HOME set and no java found in PATH, search for a JVM. + else + for jdir in $JVM_SEARCH_DIRS; do + if [ -x "$jdir/bin/java" ]; then + JAVA_HOME="$jdir" + break + fi + done + fi +fi + # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh