changeset 130:c293936e7655

Bug 2784: Fix configure to search /etc/alternatives/java correctly. Reviewed-by: yasuenag
author KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp>
date Fri, 15 Jan 2016 13:00:29 +0900
parents 0a9f7bbe5859
children 2e1e040bcda7
files ChangeLog configure configure.ac
diffstat 3 files changed, 74 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jan 12 21:59:14 2016 +0900
+++ b/ChangeLog	Fri Jan 15 13:00:29 2016 +0900
@@ -1,3 +1,7 @@
+2016-01-14  KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp>
+
+	* Bug 2784: Fix configure to search /etc/alternatives/java correctly.
+
 2016-01-12  Yasumasa Suenaga <yasuenag@gmail.com>
 
 	* Bug 2783: Add CLI kick shell
--- a/configure	Tue Jan 12 21:59:14 2016 +0900
+++ b/configure	Fri Jan 15 13:00:29 2016 +0900
@@ -639,6 +639,7 @@
 NET_SNMP_CFG_PATH
 VMSTRUCTS_CXX_FLAGS
 JDK_DIR
+READLINK
 JAVA_PATH
 ARM_FALSE
 ARM_TRUE
@@ -8141,22 +8142,64 @@
 fi
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java configured by alternatives" >&5
+    if test -n "$JAVA_PATH"; then
+      # Follow a chain of symbolic link by readlink to get the real JDK path
+      # Extract the first word of "readlink", so it can be a program name with args.
+set dummy readlink; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READLINK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $READLINK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+READLINK=$ac_cv_path_READLINK
+if test -n "$READLINK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
+$as_echo "$READLINK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      if test -z "$READLINK"; then
+        as_fn_error $? "readlink not found." "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java configured by alternatives" >&5
 $as_echo_n "checking for java configured by alternatives... " >&6; }
-
-    if test -z "$JAVA_PATH"; then
-      JDK_DIR=`$READLINK -f "$JAVA_PATH" 2>$DEVNULL | $SED -e 's:bin/java::g' 2>$DEVNULL`
-      if test $? -ne 0 ; then
-        JDK_DIR=""
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+        # We have to get JDK_PATH, not JRE_PATH
+        JDK_DIR=`$READLINK -f "$JAVA_PATH" 2>$DEVNULL | $SED -e 's:\(jre/\|\)bin/java::g' 2>$DEVNULL`
+        if test $? -ne 0 ; then
+          JDK_DIR=""
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 $as_echo "not found" >&6; }
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+        else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
 $as_echo "found" >&6; }
+        fi
       fi
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
     fi
   fi
 fi
--- a/configure.ac	Tue Jan 12 21:59:14 2016 +0900
+++ b/configure.ac	Fri Jan 15 13:00:29 2016 +0900
@@ -203,25 +203,29 @@
   AC_MSG_RESULT(none)
   AC_MSG_CHECKING([for default openjdk home directory])
   DEFAULT_JDK_PATH="/usr/lib/jvm/java-openjdk"
-  
+
   if test -d "$DEFAULT_JDK_PATH" && test -r "$DEFAULT_JDK_PATH" ; then
     JDK_DIR="$DEFAULT_JDK_PATH"
     AC_MSG_RESULT([exist])
   else
     AC_MSG_RESULT([none])
     AC_PATH_PROG([JAVA_PATH], [java], [], [/etc/alternatives])
-    AC_MSG_CHECKING([for java configured by alternatives])
-    
-    if test -z "$JAVA_PATH"; then
-      JDK_DIR=`$READLINK -f "$JAVA_PATH" 2>$DEVNULL | $SED -e 's:bin/java::g' 2>$DEVNULL`
-      if test $? -ne 0 ; then
-        JDK_DIR=""
-        AC_MSG_RESULT([not found])
+    if test -n "$JAVA_PATH"; then
+      # Follow a chain of symbolic link by readlink to get the real JDK path
+      AC_PATH_PROG([READLINK], [readlink], [], [$PATH])
+      if test -z "$READLINK"; then
+        AC_MSG_ERROR([readlink not found.])
       else
-        AC_MSG_RESULT([found])
+        AC_MSG_CHECKING([for java configured by alternatives])
+        # We have to get JDK_PATH, not JRE_PATH
+        JDK_DIR=`$READLINK -f "$JAVA_PATH" 2>$DEVNULL | $SED -e 's:\(jre/\|\)bin/java::g' 2>$DEVNULL`
+        if test $? -ne 0 ; then
+          JDK_DIR=""
+          AC_MSG_RESULT([not found])
+        else
+          AC_MSG_RESULT([found])
+        fi
       fi
-    else
-      AC_MSG_RESULT([not found])
     fi
   fi
 fi