X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fupdate-java-alternatives.sh;h=01b972bc1c6a08867db8c87c8eaadb05fbf41f31;hb=532e97b5b965cab5ace406d8ecc845afc98920ac;hp=69bf0195fc3aa02bcfcc1f856380ba175447a4fa;hpb=00abd5048e7fa6b55c2ccda441a8c7e72cd2d48d;p=releng%2Fglobal-jjb.git diff --git a/shell/update-java-alternatives.sh b/shell/update-java-alternatives.sh index 69bf0195..01b972bc 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. @@ -8,37 +8,28 @@ # 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=$(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 - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" + # Java 8 or older: old version format + 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" @@ -47,12 +38,38 @@ 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) - echo "---> Ubuntu system detected" - update-java-ubuntu + ubuntu|debian) + echo "---> Ubuntu/Debian system detected" + update_java_ubuntu + alternatives=$(which 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 + # shellcheck disable=SC2012 + JAVA_HOME=$(ls -d "$JAVA_HOME"* | head -1) + export JAVA_HOME + else + echo "no $JAVA_HOME directory nor candidate found -exiting " >&2 + exit 17 + fi +fi + +# If sudo is not found, the commands below will run anyway +SUDO_CMD=$(which sudo) + +$SUDO_CMD "$alternatives" --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 +$SUDO_CMD "$alternatives" --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 +$SUDO_CMD "$alternatives" --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 +$SUDO_CMD "$alternatives" --set java "${JAVA_HOME}/bin/java" +$SUDO_CMD "$alternatives" --set javac "${JAVA_HOME}/bin/javac" +$SUDO_CMD "$alternatives" --set java_sdk_openjdk "${JAVA_HOME}" +echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" + java -version echo JAVA_HOME="${JAVA_HOME}"