From 96a1ab139943acaffffc563fa9f17160d62c1832 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 7 Nov 2011 21:19:39 +0100 Subject: [PATCH] Scripts: Java home detection on FreeBSD and Solaris; fail gracefully on missing readlink --- bin/nix/idea.sh | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/bin/nix/idea.sh b/bin/nix/idea.sh index e423971932f8..5e56bac6d5d3 100755 --- a/bin/nix/idea.sh +++ b/bin/nix/idea.sh @@ -11,10 +11,10 @@ JDK="$IDEA_JDK" if [ -z "$JDK" ]; then - [ `uname -s` = "Darwin" ] && OS_TYPE="MAC" || OS_TYPE="NOT_MAC" + OS_TYPE=`uname -s` JDK="$JDK_HOME" # if JDK_HOME not defined and JAVA_HOME looks correct (tools.jar isn't included in Mac OS X Java bundle) - if [ -z "$JDK" ] && ([ "$OS_TYPE" = "MAC" -a -x "$JAVA_HOME/bin/java" ] || [ -f "$JAVA_HOME/lib/tools.jar" ]); then + if [ -z "$JDK" ] && ([ "$OS_TYPE" = "Darwin" -a -x "$JAVA_HOME/bin/java" ] || [ -f "$JAVA_HOME/lib/tools.jar" ]); then JDK="$JAVA_HOME" fi @@ -22,7 +22,7 @@ if [ -z "$JDK" ]; then # try to get the JDK path from java binary path JAVA_BIN_PATH=`which java` if [ -n "$JAVA_BIN_PATH" ]; then - if [ "$OS_TYPE" = "MAC" ]; then + if [ "$OS_TYPE" = "Darwin" ]; then if [ -h "$JAVA_BIN_PATH" ]; then JAVA_LOCATION=`readlink "$JAVA_BIN_PATH" | xargs dirname | xargs dirname | xargs dirname` if [ -x "$JAVA_LOCATION/CurrentJDK/Home/bin/java" ]; then @@ -34,7 +34,18 @@ if [ -z "$JDK" ]; then JDK="$JAVA_LOCATION" fi fi - else + elif [ "$OS_TYPE" = "FreeBSD" ]; then + JAVA_LOCATION=`JAVAVM_DRYRUN=yes java | grep '^JAVA_HOME' | cut -c11-` + if [ -x "$JAVA_LOCATION/bin/java" ]; then + JDK="$JAVA_LOCATION" + fi + elif [ "$OS_TYPE" = "SunOS" ]; then + JAVA_LOCATION="/usr/jdk/latest" + if [ -x "$JAVA_LOCATION/bin/java" ]; then + JDK="$JAVA_LOCATION" + fi + fi + if [ -z "$JDK" -a -x "/bin/readlink" ]; then JAVA_LOCATION=`readlink -f "$JAVA_BIN_PATH"` case "$JAVA_LOCATION" in */jre/bin/java) @@ -60,12 +71,12 @@ if [ -z "$JDK" ]; then fi VERSION_LOG=`mktemp -t java.version.log.XXXXXX` -$JDK/bin/java -version 2> $VERSION_LOG -grep 'OpenJDK' $VERSION_LOG +$JDK/bin/java -version 2> "$VERSION_LOG" +grep 'OpenJDK' "$VERSION_LOG" OPEN_JDK=$? -grep '64-Bit' $VERSION_LOG +grep '64-Bit' "$VERSION_LOG" BITS=$? -rm $VERSION_LOG +rm "$VERSION_LOG" if [ $OPEN_JDK -eq 0 ]; then echo "WARNING: You are launching IDE using OpenJDK Java runtime." echo