Files
deb-networking-odl/devstack/setup_java.sh
Isaku Yamahata 5c12b9da0f tox: enable bashate
Change-Id: I441ff386515a6f3616ee8b0f09bf073126ffa79d
2017-06-10 04:17:04 +00:00

208 lines
6.3 KiB
Bash

#!/bin/bash
ORACLE_JAVA_URL="http://download.oracle.com/otn-pub/java/jdk"
ORACLE_JAVA7_URL="${ORACLE_JAVA7_URL:-$ORACLE_JAVA_URL/7u80-b15/jdk-7u80}"
ORACLE_JAVA7_NAME="jdk1.7.0_80"
ORACLE_JAVA8_URL="${ORACLE_JAVA8_URL:-$ORACLE_JAVA_URL/8u112-b15/jdk-8u112}"
ORACLE_JAVA8_NAME="jdk1.8.0_112"
function setup_java {
# Java version 8 is the last stable one
local VERSION="${1:-8}"
echo "Setup Java version: $VERSION"
if test_java_version "$VERSION" && setup_java_env; then
echo "Current Java version is already $VERSION."
elif select_java "$VERSION"; then
echo "Java version $VERSION has been selected."
elif install_openjdk "$VERSION" && select_java "$VERSION"; then
echo "OpenJDK version $VERSION has been installed and selected."
elif install_other_java "$VERSION" && select_java "$VERSION"; then
echo "Some Java version $VERSION has been installed and selected."
else
echo "ERROR: Unable to setup Java version $VERSION."
return 1
fi
return 0
}
function setup_java_env {
local JAVA_COMMAND="${1:-${JAVA:-java}}"
JAVA_LINK="$(which $JAVA_COMMAND)"
if [[ "$JAVA_LINK" == "" ]]; then
return 1
fi
export JAVA="$(readlink -f $JAVA_LINK)"
export JAVA_HOME=$(echo $JAVA | sed "s:/bin/java::" | sed "s:/jre::")
if [ "$JAVA" != "$(readlink -f $(which java))" ]; then
export PATH="$(dirname $JAVA):$PATH"
if [ "$JAVA" != "$(readlink -f $(which java))" ]; then
echo "Unable to set $JAVA as current."
return 1
fi
fi
echo "JAVA is: $JAVA"
echo "JAVA_HOME is: $JAVA_HOME"
echo "Java version is:"
$JAVA -version 2>&1
}
function select_java {
local VERSION="$1"
local COMMAND
for COMMAND in $(list_java_commands); do
if test_java_version "$VERSION" "$COMMAND"; then
if setup_java_env "$COMMAND"; then
return 0
fi
fi
done
echo 'Required java version not found.'
return 1
}
function test_java_version {
local EXPECTED_VERSION="'"*' version "1.'$1'.'*'"'"'"
local COMMAND="${2:-${JAVA:-java}}"
local ACTUAL_VERSION="'"$($COMMAND -version 2>&1 | head -n 1)"'"
if [[ $ACTUAL_VERSION == $EXPECTED_VERSION ]]; then
echo "Found matching java version: $ACTUAL_VERSION"
return 0
else
return 1
fi
}
if is_ubuntu; then
# --- Ubuntu -------------------------------------------------------------
function list_java_commands {
update-alternatives --list java
}
function install_openjdk {
local REQUIRED_VERSION="$1"
apt_get install "openjdk-$REQUIRED_VERSION-jre-headless"
}
function install_other_java {
local VERSION="$1"
local PPA_REPOSITORY="ppa:webupd8team/java"
local JAVA_INSTALLER="oracle-java${VERSION}-installer"
local JAVA_SET_DEFAULT="oracle-java${VERSION}-set-default"
# Accept installer license
echo "$JAVA_INSTALLER" shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
# Remove all existing set-default versions
apt_get remove oracle-java*-set-default
if apt_get install $JAVA_INSTALLER ; then
if apt_get install $JAVA_SET_DEFAULT ; then
return 0 # Some PPA was already providing desired packages
fi
fi
# Add PPA only when package is not available
if apt_get install software-properties-common; then
# I pipe this after echo to emulate an user key-press
if echo | sudo -E add-apt-repository "$PPA_REPOSITORY"; then
if apt_get update; then
if apt_get install $JAVA_INSTALLER ; then
if apt_get install $JAVA_SET_DEFAULT ; then
return 0
fi
fi
fi
fi
fi
# Something has gone wrong!
return 1
}
else
# --- Red Hat -------------------------------------------------------------
function list_java_commands {
alternatives --display java 2>&1 | grep -v '^[[:space:]]' | awk '/[[:space:]]- priority[[:space:]]/{print $1}'
}
function install_openjdk {
local VERSION="$1"
yum_install java-1.$VERSION.*-openjdk-headless
}
function install_other_java {
local VERSION="$1"
if [[ "$(uname -m)" == "x86_64" ]]; then
local ARCH=linux-x64
else
local ARCH=linux-i586
fi
if [[ "$VERSION" == "7" ]]; then
ORIGIN=$ORACLE_JAVA7_URL
TARGET=$ORACLE_JAVA7_NAME
elif [[ "$VERSION" == "8" ]]; then
ORIGIN=$ORACLE_JAVA8_URL
TARGET=$ORACLE_JAVA8_NAME
else
echo "Unsupported Java version: $VERSION."
return 1
fi
local NEW_JAVA="/usr/java/$TARGET/jre/bin/java"
if test_java_version "$VERSION" "$NEW_JAVA"; then
if sudo alternatives --install /usr/bin/java java "$NEW_JAVA" 200000; then
return 0
fi
fi
local EXT
local WGET_OPTIONS="-c --no-check-certificate --no-cookies"
local HEADER="Cookie: oraclelicense=accept-securebackup-cookie"
for EXT in "rpm" "tar.gz"; do
local URL="$ORIGIN-$ARCH.$EXT"
local PACKAGE="/tmp/$(basename $URL)"
if wget $WGET_OPTIONS --header "$HEADER" "$URL" -O "$PACKAGE"; then
case "$EXT" in
"rpm")
sudo rpm -i "$PACKAGE"
;;
"tar.gz")
sudo mkdir -p /usr/java && sudo tar -C /usr/java -xzf "$PACKAGE"
;;
*)
echo "Unsupported extension: $EXT"
;;
esac
if test_java_version "$VERSION" "$NEW_JAVA"; then
if sudo alternatives --install /usr/bin/java java "$NEW_JAVA" 200000; then
return 0
fi
fi
echo "Unable to register installed java."
else
echo "Unable to download java archive: $URL"
fi
done
return 1
}
fi