Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Remove Java Installation Scripts" #6766

Merged
merged 1 commit into from
Jul 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions scripts/install_java.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
:: This script will download and install the appropriate JDK for use with Bisq development.
:: It will also configure it as the default system JDK.
:: If you need to change to another default JDK for another purpose later, you just need to
:: change the JAVA_HOME environment variable. For example, use the following command:
:: setx /M JAVA_HOME "<JDK_PATH>"

@echo off

:: Ensure we have administrative privileges in order to install files and set environment variables
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' == '0' (
::If no error is encountered, we have administrative privileges
goto GotAdminPrivileges
)
echo Requesting administrative privileges...
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadminprivileges.vbs"
set params = %*:"=""
echo UAC.ShellExecute "%~s0", "%params%", "", "runas", 1 >> "%temp%\getadminprivileges.vbs"
"%temp%\getadminprivileges.vbs"
exit /B
:GotAdminPrivileges
if exist "%temp%\getadminprivileges.vbs" ( del "%temp%\getadminprivileges.vbs" )
pushd "%CD%"
cd /D "%~dp0"

title Install Java

set jdk_version=11.0.2
set jdk_filename=openjdk-%jdk_version%_windows-x64_bin
set jdk_url=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip

if exist "%PROGRAMFILES%\Java\openjdk\jdk-%jdk_version%" (
echo %PROGRAMFILES%\Java\openjdk\jdk-%jdk_version% already exists, skipping install
goto SetEnvVars
)

echo Downloading required files to %TEMP%
powershell -Command "Invoke-WebRequest %jdk_url% -OutFile $env:temp\%jdk_filename%.zip"

echo Extracting and installing JDK to %PROGRAMFILES%\Java\openjdk\jdk-%jdk_version%
powershell -Command "Expand-Archive $env:temp\%jdk_filename%.zip -DestinationPath %TEMP%\openjdk-%jdk_version% -Force"
md "%PROGRAMFILES%\Java\openjdk"
move "%TEMP%\openjdk-%jdk_version%\jdk-%jdk_version%" "%PROGRAMFILES%\Java\openjdk"

echo Removing downloaded files
rmdir /S /Q %TEMP%\openjdk-%jdk_version%
del /Q %TEMP%\%jdk_filename%.zip

:SetEnvVars
echo Setting environment variables
powershell -Command "[Environment]::SetEnvironmentVariable('JAVA_HOME', '%PROGRAMFILES%\Java\openjdk\jdk-%jdk_version%', 'Machine')"
set java_bin=%%JAVA_HOME%%\bin
echo %PATH%|find /i "%java_bin%">nul || powershell -Command "[Environment]::SetEnvironmentVariable('PATH', '%PATH%;%java_bin%', 'Machine')"

echo Done!
pause
82 changes: 82 additions & 0 deletions scripts/install_java.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/usr/bin/env bash
# This script will download and install the appropriate JDK for use with Bisq development.
# It will also configure it as the default system JDK.
# If you need to change to another default JDK for another purpose later, you can use the
# following commands and select the default JDK:
# Linux:
# update-alternatives --config java
# update-alternatives --config javac
# MacOS:
# echo 'export JAVA_HOME=/Library/Java/JavaVirtualMachines/<ENTER_NEW_JDK>/Contents/Home' >>~/.bash_profile
# echo 'export PATH=$JAVA_HOME/bin:$PATH' >>~/.bash_profile
# source ~/.bash_profile
set -e

unameOut="$(uname -s)"
case "${unameOut}" in
Linux*)
JAVA_HOME=/usr/lib/jvm/openjdk-11.0.2
JDK_FILENAME=openjdk-11.0.2_linux-x64_bin.tar.gz
JDK_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz

# Determine which package manager to use depending on the distribution
declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get

for f in "${!osInfo[@]}"
do
if [[ -f $f ]]; then
PACKAGE_MANAGER=${osInfo[$f]}
break
fi
done

if [ ! -d "$JAVA_HOME" ]; then
# Ensure curl is installed since it may not be
$PACKAGE_MANAGER -y install curl

curl -L -O $JDK_URL
mkdir -p $JAVA_HOME
tar -zxf $JDK_FILENAME -C $JAVA_HOME --strip 1
rm $JDK_FILENAME

update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 2000
update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 2000
fi

update-alternatives --set java $JAVA_HOME/bin/java
update-alternatives --set javac $JAVA_HOME/bin/javac
;;
Darwin*)
JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
JDK_FILENAME=openjdk-11.0.2_osx-x64_bin.tar.gz
JDK_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_osx-x64_bin.tar.gz
if [ ! -d "$JAVA_HOME" ]; then
if [[ $(command -v brew) == "" ]]; then
echo "Installing Homebrew"
/bin/bash -c "$(curl -fsSL https://github.com/raw/Homebrew/install/HEAD/install.sh)"
else
echo "Updating Homebrew"
brew update
fi

brew install curl
curl -L -O $JDK_URL
sudo mkdir /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk | sudo bash
gunzip -c $JDK_FILENAME | tar xopf -
sudo mv jdk-11.0.2.jdk/* /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk
sudo rmdir jdk-11.0.2.jdk
rm $JDK_FILENAME
fi

echo export JAVA_HOME=$JAVA_HOME >>~/.bash_profile
echo export PATH=$JAVA_HOME/bin:"$PATH" >>~/.bash_profile
source "$HOME/.bash_profile"
;;
*)
esac
java -version
143 changes: 143 additions & 0 deletions scripts/install_java_linux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
#!/bin/bash

# Install OpenJDK 11.0.2 on Linux

set -eu

# Download and install locations
JDK_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
JAVA_HOME_DIR=/usr/lib/jvm/openjdk-11.0.2

alpine_openjdk_package=openjdk11
alpine_openjdk_location=/usr/lib/jvm/java-11-openjdk


OS=$(uname)
if [ "$OS" != Linux ]
then
echo This script supports Linux only >&2
exit 1
fi

PACKAGE_MANAGER=
for tool in apk yum pacman emerge zypper apt-get dnf
do
if command -v $tool >/dev/null
then
PACKAGE_MANAGER=$tool
break
fi
done

if [ -z "$PACKAGE_MANAGER" ]
then
echo "Unknown OS" >&2
fi

missing=
for cmd in curl tar gzip
do
if ! command -v $cmd >/dev/null
then
missing="${missing+$missing }$cmd"
if [ "$cmd" = curl ]
then
missing="$missing ca-certificates"
fi
fi
done

sudo_exec () {
if [ "${EID-500}" -eq 0 ] || [ "${HOME-/home}" = /root ]
then
"$@"
elif command -v sudo
then
sudo "$@"
else
echo "Can't execute with elevated priviliges: $*" >&2
exit 1
fi
}

# Install missing packages
if [ -n "$missing" ]
then
case "$PACKAGE_MANAGER" in
apk)
: no need to install missing packages, because
: we will install OpenJDK using apk
;;
pacman)
sudo_exec pacman -Syy --noconfirm "$missing"
;;
apt-get)
sudo_exec apt-get update
# shellcheck disable=SC2086
sudo_exec apt-get install -y --no-install-recommends $missing
;;
dnf|emerge|yum|zypper)
sudo_exec "$PACKAGE_MANAGER" update
# shellcheck disable=SC2086
sudo_exec "$PACKAGE_MANAGER" install -y $missing
;;
*)
echo "The following packages are missing from your system: $missing" >&2
echo "Please install these packages before proceeding" >&2
exit 1;
;;
esac
fi

if [ "$PACKAGE_MANAGER" = apk ]
then
if sudo_exec apk add --no-cache ${alpine_openjdk_package}
then
echo "Installed Java to $alpine_openjdk_location"
echo "To start using 'javac', add $alpine_openjdk_location/bin to your PATH:"
echo "export PATH=$alpine_openjdk_location/bin:\$PATH"
fi
exit
fi


JDK_FILENAME=$(basename "$JDK_URL")
tmpdir=$(mktemp -d)
trap -- 'rm -rf "$tmpdir"' EXIT

mkdir "$tmpdir/JAVA_HOME_DIR"
curl -L -o "$tmpdir/$JDK_FILENAME" "$JDK_URL"
tar -xf "$tmpdir/$JDK_FILENAME" -C "$tmpdir/JAVA_HOME_DIR" --strip-components=1

if [ -d "$tmpdir/JAVA_HOME_DIR/bin" ]
then
sudo_exec rm -rf "$JAVA_HOME_DIR"
sudo_exec mkdir -p "$(dirname "$JAVA_HOME_DIR")"
sudo_exec mv "$tmpdir/JAVA_HOME_DIR" "$JAVA_HOME_DIR"
else
echo "Error extracting archive contents" >&2
exit 1
fi

echo "Java has been installed in $JAVA_HOME_DIR"

if command -v update-alternatives >/dev/null
then
update-alternatives --install /usr/bin/java java "$JAVA_HOME_DIR/bin/java" 2000
update-alternatives --install /usr/bin/javac javac "$JAVA_HOME_DIR/bin/javac" 2000
update-alternatives --set java "$JAVA_HOME_DIR/bin/java"
update-alternatives --set javac "$JAVA_HOME_DIR/bin/javac"

echo "and configured as the default JDK using 'update-alternatives'."
echo "If you need to change to another JDK later, you can do so like so:"
echo " update-alternatives --config java"
echo " update-alternatives --config javac"
else
echo "To start using it, please set/update your 'JAVA_HOME' and 'PATH' environment variables like so:"
echo
echo "export JAVA_HOME=\"$JAVA_HOME_DIR\""
echo "export PATH=\"$JAVA_HOME_DIR/bin:\$PATH\""
echo
echo "Consider adding the above lines to one of your personal initialization files"
echo " like ~/.bashrc, ~/.bash_profile, ~/.profile, or similar."
fi
60 changes: 60 additions & 0 deletions scripts/install_java_macos.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

# Install OpenJDK 11.0.2 on macOS

set -eu

# Download and install locations
JDK_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_osx-x64_bin.tar.gz
JAVA_HOME_DIR=/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk


OS=$(uname)
if [[ $OS != Darwin ]]
then
echo This script supports macOS only >&2
exit 1
fi

command -v curl >/dev/null || { echo "cURL is not available" >&2; exit 1; }
command -v tar >/dev/null || { echo "tar is not available" >&2; exit 1; }

sudo_exec () {
if [[ $EUID -eq 0 ]]
then
"$@"
else
sudo "$@"
fi
}

JDK_FILENAME=$(basename "$JDK_URL")

tmpdir=$(mktemp -d)
trap -- 'rm -rf "$tmpdir"' EXIT

mkdir "$tmpdir/JAVA_HOME_DIR"
curl -L -o "$tmpdir/$JDK_FILENAME" "$JDK_URL"
tar -xf "$tmpdir/$JDK_FILENAME" -C "$tmpdir/JAVA_HOME_DIR" --strip-components=2

if [[ -d "$tmpdir/JAVA_HOME_DIR/Contents" ]]
then
sudo_exec rm -rf "$JAVA_HOME_DIR"
sudo_exec mkdir -p "$(dirname "$JAVA_HOME_DIR")"
sudo_exec mv "$tmpdir/JAVA_HOME_DIR" "$JAVA_HOME_DIR"
else
echo "Error extracting archive contents" >&2
exit 1
fi

echo "Java has been installed in $JAVA_HOME_DIR"
echo "To start using it, please set/update your 'JAVA_HOME' and 'PATH' environment variables like so:"
echo
echo " export JAVA_HOME=\"$JAVA_HOME_DIR/Contents/Home\""
echo " export PATH=\"$JAVA_HOME_DIR/Contents/Home/bin:\$PATH\""
echo
echo "Consider adding the above lines to one of your personal initialization files."
echo "(~/.bashrc, ~/.bash_profile, ~/.profile, or similar)."

export JAVA_HOME="$JAVA_HOME_DIR/Contents/Home"
export PATH="$JAVA_HOME_DIR/Contents/Home/bin":$PATH