Skip to content

Commit a3edd52

Browse files
authored
Merge pull request #20 from ev3dev-lang-java/better_upgrade
Java installation process enhancements
2 parents be2414a + c971581 commit a3edd52

File tree

2 files changed

+61
-41
lines changed

2 files changed

+61
-41
lines changed

modules/java.sh

Lines changed: 55 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/bin/bash
22

3-
3+
#####################################
4+
# Install the latest EV3 JRI bundle
45
function java_install_bundle() {
56
if [ -d "$JRI_PATH_NEW" ]; then
67
echo "Sorry, we detected a previous installation in path: /opt/jri-10-build-050"
@@ -24,6 +25,9 @@ function java_install_bundle() {
2425
JAVA_REAL_EXE="$JRI_EXE"
2526
}
2627

28+
29+
########################################
30+
# Install the latest Debian armhf java
2731
function java_install_ppa() {
2832
###
2933
# Add Debian Buster repo to Stretch
@@ -53,54 +57,64 @@ EOF
5357
JAVA_REAL_EXE="$(which java)"
5458
}
5559

56-
#1. Detect Java
57-
#1.1 Install Java
58-
#1.2 Create JAVA_HOME PENDING
60+
###########################################
61+
# Install Java by a platform specific way
62+
function java_just_install() {
63+
if [ "$PLATFORM" == "ev3" ]; then
64+
java_install_bundle
65+
elif [ "$PLATFORM" == "brickpi" ] ||
66+
[ "$PLATFORM" == "brickpi3" ] ||
67+
[ "$PLATFORM" == "pistorms" ]; then
68+
java_install_ppa
69+
fi
70+
}
5971

60-
if type -p java; then
61-
echo "Found java executable in PATH"
62-
JAVA_REAL_EXE="$(which java)"
72+
#####################################
73+
# Locate existing Java installation
74+
function java_find() {
75+
if type -p java; then
76+
echo "Found java executable in PATH"
77+
JAVA_REAL_EXE="$(which java)"
78+
79+
elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
80+
echo "Found java executable in JAVA_HOME"
81+
JAVA_REAL_EXE="$JAVA_HOME/bin/java"
6382

64-
if [ ! -d "$JRI_OPT/jri-10-build-050" ]; then
65-
echo "But we will upgrade the Java version"
66-
echo $JRI_OPT/jri-10-build-050
67-
echo
68-
if [ "$PLATFORM" == "ev3" ]; then
69-
java_install_bundle
70-
elif [ "$PLATFORM" == "brickpi" ] ||
71-
[ "$PLATFORM" == "brickpi3" ] ||
72-
[ "$PLATFORM" == "pistorms" ]; then
73-
java_install_ppa
74-
fi
7583
else
76-
echo "Latest Java installed."
77-
echo $JRI_OPT/jri-10-build-050
84+
echo "No java detected"
85+
JAVA_REAL_EXE="/bin/true"
7886
fi
87+
}
7988

80-
elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
81-
echo "Found java executable in JAVA_HOME"
82-
JAVA_REAL_EXE="$JAVA_HOME/bin/java"
89+
############################################################
90+
# Check if the right Java is installed, if not, install it
91+
function java_install() {
92+
JAVA_VERSION_RAW="$("$JAVA_REAL_EXE" -version 2>&1)"
93+
JAVA_VERSION="$(echo "$JAVA_VERSION_RAW" | awk -F '"' '/version/ {print $2}')"
94+
JAVA_VERSION_LATEST="${JAVA_LATEST[$PLATFORM]}"
8395

84-
echo $JRI_OPT/jri-10-build-050
85-
if [ ! -d "$JRI_OPT/jri-10-build-050" ]; then
86-
echo "But upgrading Java version"
87-
echo
96+
echo "Installed Java version: '${JAVA_VERSION}'"
97+
98+
if [ "$JAVA_VERSION" != "$JAVA_VERSION_LATEST" ]; then
99+
echo "Installing latest Java version ($JAVA_VERSION_LATEST)..."
100+
java_just_install
101+
else
102+
echo "Latest major Java version is installed."
88103
fi
104+
}
89105

90-
else
91-
echo "No java detected"
106+
#############################
107+
# Perform maintenance tasks
108+
function java_postinstall() {
109+
update-alternatives --set "/usr/bin/java" "$JAVA_REAL_EXE"
92110

93-
if [ "$PLATFORM" == "ev3" ]; then
94-
java_install_bundle
95-
elif [ "$PLATFORM" == "brickpi" ] ||
96-
[ "$PLATFORM" == "brickpi3" ] ||
97-
[ "$PLATFORM" == "pistorms" ]; then
98-
java_install_ppa
99-
fi
100-
fi
111+
echo "Output of 'java -version':"
112+
"$JAVA_REAL_EXE" -version
101113

102-
echo "Installation complete. Java version:"
103-
"$JAVA_REAL_EXE" -version
114+
echo "Dumping class cache..."
115+
"$JAVA_REAL_EXE" -Xshare:dump
116+
}
104117

105-
echo "Dumping class cache..."
106-
"$JAVA_REAL_EXE" -Xshare:dump
118+
java_find
119+
java_install
120+
java_postinstall

modules/vars.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ JDEB_REPO="deb http://ftp.debian.org/debian buster main contrib non-free"
1414
JDEB_PKG="openjdk-10-jre-headless"
1515
JDEB_TMP_LINK="/usr/lib/jvm/java-10-openjdk-armhf/bin/java"
1616

17+
declare -A JAVA_LATEST
18+
JAVA_LATEST[ev3]="10"
19+
JAVA_LATEST[brickpi]="10"
20+
JAVA_LATEST[brickpi3]="10"
21+
JAVA_LATEST[pistorms]="10"
22+
1723
# graphics
1824
CHARACTER="#"
1925
SPACE=" "

0 commit comments

Comments
 (0)