You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2010/06/29 10:49:49 UTC

svn commit: r958880 - in /karaf/branches/karaf-1.x/assembly/src/main: distribution/unix-shell/bin/karaf filtered-resources/bin/admin

Author: gnodet
Date: Tue Jun 29 08:49:49 2010
New Revision: 958880

URL: http://svn.apache.org/viewvc?rev=958880&view=rev
Log:
KARAF-16: fix JAVA_HOME computation to make sure it works on various platforms

Modified:
    karaf/branches/karaf-1.x/assembly/src/main/distribution/unix-shell/bin/karaf
    karaf/branches/karaf-1.x/assembly/src/main/filtered-resources/bin/admin

Modified: karaf/branches/karaf-1.x/assembly/src/main/distribution/unix-shell/bin/karaf
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-1.x/assembly/src/main/distribution/unix-shell/bin/karaf?rev=958880&r1=958879&r2=958880&view=diff
==============================================================================
--- karaf/branches/karaf-1.x/assembly/src/main/distribution/unix-shell/bin/karaf (original)
+++ karaf/branches/karaf-1.x/assembly/src/main/distribution/unix-shell/bin/karaf Tue Jun 29 08:49:49 2010
@@ -144,22 +144,23 @@ setupNativePath() {
     export LD_LIBRARY_PATH
 }
 
-pathCanonicalSimple() {
-	local dst="${1}"
-	cd -P -- "$(dirname -- "${dst}")" &> /dev/null && echo "$(pwd -P)/$(basename -- "${dst}")"
-}
-
 pathCanonical() {
-	local dst=`pathCanonicalSimple "${1}"`
-	while [ -h "${dst}" ]; do
-		local linkDst="$(ls -l "${dst}" | sed -e 's/^.*[[:space:]]*->[[:space:]]*\(.*\)[[:space:]]*$/\1/g')"
-		if [ -z "$(echo "${linkDst}" | grep -E '^/')" ]; then
-			# relative link destination
-			linkDst="$(dirname "${dst}")/${linkDst}"
-		fi
-		dst=`pathCanonicalSimple "${linkDst}"`
-	done
-	echo "${dst}"
+    local dst="${1}"
+    while [ -h "${dst}" ] ; do
+        ls=`ls -ld "${dst}"`
+        link=`expr "$ls" : '.*-> \(.*\)$'`
+        if expr "$link" : '/.*' > /dev/null; then
+            dst="$link"
+        else
+            dst="`dirname "${dst}"`/$link"
+        fi
+    done
+	local bas=`basename "${dst}"`
+	local dir=`dirname "${dst}"`
+    if [ "$bas" != "$dir" ]; then
+		dst="`pathCanonical "$dir"`/$bas"
+    fi
+    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
 }
 
 locateJava() {
@@ -172,6 +173,9 @@ locateJava() {
 	if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
 		JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
 	fi
+    if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then
+        JAVA_HOME=`java-config --jre-home`
+    fi
     if [ "x$JAVA" = "x" ]; then
         if [ "x$JAVA_HOME" != "x" ]; then
             if [ ! -d "$JAVA_HOME" ]; then
@@ -180,14 +184,15 @@ locateJava() {
             JAVA="$JAVA_HOME/bin/java"
         else
             warn "JAVA_HOME not set; results may vary"
-            JAVA=`which java`
+            JAVA=`type java`
+            JAVA=`expr "$JAVA" : '.*is \(.*\)$'`
             if [ "x$JAVA" = "x" ]; then
                 die "java command not found"
             fi
         fi
     fi
     if [ "x$JAVA_HOME" = "x" ]; then
-        JAVA_HOME=$(dirname $(pathCanonical "$JAVA"))
+        JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))"
     fi
 }
 

Modified: karaf/branches/karaf-1.x/assembly/src/main/filtered-resources/bin/admin
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-1.x/assembly/src/main/filtered-resources/bin/admin?rev=958880&r1=958879&r2=958880&view=diff
==============================================================================
--- karaf/branches/karaf-1.x/assembly/src/main/filtered-resources/bin/admin (original)
+++ karaf/branches/karaf-1.x/assembly/src/main/filtered-resources/bin/admin Tue Jun 29 08:49:49 2010
@@ -143,6 +143,25 @@ setupNativePath() {
     export LD_LIBRARY_PATH
 }
 
+pathCanonical() {
+    local dst="${1}"
+    while [ -h "${dst}" ] ; do
+        ls=`ls -ld "${dst}"`
+        link=`expr "$ls" : '.*-> \(.*\)$'`
+        if expr "$link" : '/.*' > /dev/null; then
+            dst="$link"
+        else
+            dst="`dirname "${dst}"`/$link"
+        fi
+    done
+    local bas=`basename "${dst}"`
+    local dir=`dirname "${dst}"`
+    if [ "$bas" != "$dir" ]; then
+        dst="`pathCanonical "$dir"`/$bas"
+    fi
+    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
+}
+
 locateJava() {
     # Setup the Java Virtual Machine
     if $cygwin ; then
@@ -150,10 +169,13 @@ locateJava() {
         [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
     fi
 
+    if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
+        JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+    fi
+    if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then
+        JAVA_HOME=`java-config --jre-home`
+    fi
     if [ "x$JAVA" = "x" ]; then
-        if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
-            JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
-        fi
         if [ "x$JAVA_HOME" != "x" ]; then
             if [ ! -d "$JAVA_HOME" ]; then
                 die "JAVA_HOME is not valid: $JAVA_HOME"
@@ -161,9 +183,16 @@ locateJava() {
             JAVA="$JAVA_HOME/bin/java"
         else
             warn "JAVA_HOME not set; results may vary"
-            JAVA="java"
+            JAVA=`type java`
+            JAVA=`expr "$JAVA" : '.*is \(.*\)$'`
+            if [ "x$JAVA" = "x" ]; then
+                die "java command not found"
+            fi
         fi
     fi
+    if [ "x$JAVA_HOME" = "x" ]; then
+        JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))"
+    fi
 }
 
 detectJVM() {