X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fupdate-java-alternatives.sh;h=fdd87c709170c11b52d5a971128bfee9cc73c22a;hb=60d27ecb53e9fe7d91dcaa0e0fd37a725f0fc285;hp=58a83fc6366381a8681f7136d1b34db1137b34fd;hpb=d233be84b81a56b80356ac0f20a1658c9a93a5dd;p=releng%2Fglobal-jjb.git diff --git a/shell/update-java-alternatives.sh b/shell/update-java-alternatives.sh index 58a83fc6..fdd87c70 100644 --- a/shell/update-java-alternatives.sh +++ b/shell/update-java-alternatives.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2018 The Linux Foundation and others. @@ -14,34 +14,22 @@ echo "---> update-java-alternatives.sh" JAVA_ENV_FILE="/tmp/java.env" -update-java-redhat() { - JAVA_RELEASE=${SET_JDK_VERSION//[a-zA-Z]/} - if [[ ${JAVA_RELEASE} -ge 9 ]]; then +JAVA_RELEASE=$(echo $SET_JDK_VERSION | sed 's/[a-zA-Z]//g') +JAVA_RELEASE_NBR=$(echo $SET_JDK_VERSION | sed 's/[a-zA-Z:-]//g') +#TODO check whether is it worth keeping there 2 distinct variables +update_java_redhat() { + 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" + export JAVA_HOME="/usr/lib/jvm/java-1.${JAVA_RELEASE_NBR}.0-openjdk" fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" } -update-java-ubuntu() { +update_java_ubuntu() { 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 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" + export JAVA_HOME="/usr/lib/jvm/java-${JAVA_RELEASE_NBR}-openjdk-${HOST_ARCH}" } echo "---> Updating Java version" @@ -50,12 +38,33 @@ OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') case "${OS}" in fedora|centos|redhat) echo "---> RedHat type system detected" - update-java-redhat + update_java_redhat + alternatives="/usr/sbin/alternatives" ;; ubuntu|debian) echo "---> Ubuntu/Debian system detected" - update-java-ubuntu + update_java_ubuntu + alternatives="/usr/sbin/update-alternatives" ;; esac + +if ! [ -d "$JAVA_HOME" ]; then + echo "$JAVA_HOME directory not found - trying to find an approaching one" + if ls -d "$JAVA_HOME"*; then + export JAVA_HOME=$(ls -d "$JAVA_HOME"* | head -1) + else + echo "no $JAVA_HOME directory nor candidate found -exiting " >&2 + exit 17 + fi +fi + +sudo $alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 +sudo $alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 +sudo $alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 +sudo $alternatives --set java "${JAVA_HOME}/bin/java" +sudo $alternatives --set javac "${JAVA_HOME}/bin/javac" +sudo $alternatives --set java_sdk_openjdk "${JAVA_HOME}" +echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" + java -version echo JAVA_HOME="${JAVA_HOME}"