summaryrefslogtreecommitdiffstats
path: root/networking-odl/devstack/setup_java.sh
diff options
context:
space:
mode:
Diffstat (limited to 'networking-odl/devstack/setup_java.sh')
-rw-r--r--networking-odl/devstack/setup_java.sh207
1 files changed, 207 insertions, 0 deletions
diff --git a/networking-odl/devstack/setup_java.sh b/networking-odl/devstack/setup_java.sh
new file mode 100644
index 0000000..2b03cbc
--- /dev/null
+++ b/networking-odl/devstack/setup_java.sh
@@ -0,0 +1,207 @@
+#!/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/8u74-b02/jdk-8u74}"
+ORACLE_JAVA8_NAME="jdk1.8.0_74"
+
+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