Fix: safer behaviour handling java variables
[releng/global-jjb.git] / shell / update-java-alternatives.sh
index 8484a71..58a83fc 100644 (file)
@@ -8,16 +8,19 @@
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 ##############################################################################
-
+echo "---> update-java-alternatives.sh"
 # This script takes the java-version variable to set the proper alternative
 # for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros
 
 JAVA_ENV_FILE="/tmp/java.env"
 
 update-java-redhat() {
-    if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then
-        export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
+    JAVA_RELEASE=${SET_JDK_VERSION//[a-zA-Z]/}
+    if [[ ${JAVA_RELEASE} -ge 9 ]]; then
+        # Java 9 or newer: new version format
+        export JAVA_HOME="/usr/lib/jvm/java-${JAVA_RELEASE}-openjdk"
     else
+        # Java 8 or older: old version format
         export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk"
     fi
     sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1
@@ -30,7 +33,8 @@ update-java-redhat() {
 }
 
 update-java-ubuntu() {
-    export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64"
+    HOST_ARCH=$(dpkg --print-architecture)
+    export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-${HOST_ARCH}"
     sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1
     sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1
     sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1
@@ -48,8 +52,8 @@ case "${OS}" in
         echo "---> RedHat type system detected"
         update-java-redhat
     ;;
-    ubuntu)
-        echo "---> Ubuntu system detected"
+    ubuntu|debian)
+        echo "---> Ubuntu/Debian system detected"
         update-java-ubuntu
     ;;
 esac