Skip to content

Commit 74530a3

Browse files
authored
Merge pull request #44 from ev3dev-lang-java/fullJDK
Add fulljdk installer
2 parents abda578 + 0b1abe0 commit 74530a3

File tree

3 files changed

+132
-29
lines changed

3 files changed

+132
-29
lines changed

installer-jessie.sh

Lines changed: 59 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@ function print_info_header() {
2121
function set_configuration() {
2222
# jri
2323
JRI_URL="https://ci.adoptopenjdk.net/view/ev3dev/job/openjdk11_build_ev3_linux/lastSuccessfulBuild/artifact/build/jri-ev3.tar.gz"
24+
JDK_URL="https://ci.adoptopenjdk.net/view/ev3dev/job/openjdk11_build_ev3_linux/lastSuccessfulBuild/artifact/build/jdk-ev3.tar.gz"
2425
JRI_DIR="/opt/jri-11-ev3"
26+
JDK_DIR="/opt/jdk-11-ev3"
2527
JRI_PRIORITY=1111
2628

2729
# packages
2830
OPENCV_PKGS="libopencv2.4-java"
2931
RXTX_PKGS="librxtx-java"
3032
JRE_PKGS="openjdk-8-jre-headless"
33+
JDK_PKGS="openjdk-8-jdk-headless"
3134

3235
# class lists
3336
JRI_CLASSLIST="$JRI_DIR/lib/classlist"
@@ -111,6 +114,7 @@ function do_help() {
111114
echo "Installer options:"
112115
echo "sudo ./installer.sh update ... update APT repositories"
113116
echo "sudo ./installer.sh java ... installs Java"
117+
echo "sudo ./installer.sh fulljdk ... installs full JDK on the brick (not normally necessary)"
114118
echo "sudo ./installer.sh opencv ... installs OpenCV libraries"
115119
echo "sudo ./installer.sh rxtx ... installs RXTX library"
116120
echo "sudo ./installer.sh javaLibs ... installs ev3dev-lang-java libraries"
@@ -135,13 +139,27 @@ function do_rxtx() {
135139
# Install Java by a platform specific way
136140
function java_install() {
137141
if [ "$PLATFORM" = "ev3" ]; then
138-
java_install_jri
139-
return $?
142+
if [ "$1" == "small" ]; then
143+
java_install_jri "$JRI_URL" "$JRI_DIR" "true" "jri"
144+
return $?
145+
elif [ "$1" == "full" ]; then
146+
java_install_jri "$JDK_URL" "$JDK_DIR" "false" "jdk"
147+
return $?
148+
else
149+
return 1
150+
fi
140151
elif [ "$PLATFORM" = "brickpi" ] ||
141152
[ "$PLATFORM" = "brickpi3" ] ||
142153
[ "$PLATFORM" = "pistorms" ]; then
143-
java_install_ppa
144-
return $?
154+
if [ "$1" == "small" ]; then
155+
java_install_ppa "$JRE_PKGS"
156+
return $?
157+
elif [ "$1" == "full" ]; then
158+
java_install_ppa "$JDK_PKGS"
159+
return $?
160+
else
161+
return 1
162+
fi
145163
fi
146164
}
147165

@@ -164,31 +182,42 @@ function java_find() {
164182
JAVA_VERSION_RAW="$("$JAVA_REAL_EXE" -version 2>&1)"
165183
JAVA_VERSION="$(echo "$JAVA_VERSION_RAW" | awk -F '"' '/version/ {print $2}')"
166184

167-
echo "Installed Java version: '${JAVA_VERSION}', installing anyway."
185+
echo "Installed Java version: '${JAVA_VERSION}', proceeding with installation."
168186
write_log "old java ver: $JAVA_VERSION"
169187
return 0
170188
}
171189

172190
######################################
173191
# Install the latest OpenJDK for EV3
192+
# $1 => source URL
193+
# $2 => destination directory
194+
# $3 => if alternatives should be updated (true/false)
195+
# $4 => in-archive directory name
174196
function java_install_jri() {
175-
write_log "installing jri manually from jenkins"
197+
write_log "installing java manually from jenkins"
176198

177-
for i in "$(ls "$JRI_DIR/bin")"; do
178-
update-alternatives --remove "$i" "$JRI_DIR/bin/$i" || true
179-
done
180-
rm -rf "$JRI_DIR" || true
181-
182-
wget -nv "$JRI_URL" -O /tmp/jri.tar.gz || return $?
183-
tar -C /tmp -xf /tmp/jri.tar.gz
184-
mv /tmp/jri "$JRI_DIR"
185-
186-
write_log "setting alternatives"
187-
for i in $(ls "$JRI_DIR/bin"); do
188-
update-alternatives --install "/usr/bin/$i" "$i" "$JRI_DIR/bin/$i" "$JRI_PRIORITY"
189-
done
199+
if [ "$3" = "true" ]; then
200+
for i in "$(ls "$JRI_DIR/bin")"; do
201+
update-alternatives --remove "$i" "$JRI_DIR/bin/$i" || true
202+
done
203+
fi
204+
rm -rf "$2" /tmp/java-extract || true
205+
mkdir -p /tmp/java-extract
206+
207+
wget -nv "$1" -O /tmp/java-extract/pkg.tar.gz || return $?
208+
tar -C /tmp/java-extract -xf /tmp/java-extract/pkg.tar.gz
209+
mv "/tmp/java-extract/$4" "$2"
210+
211+
if [ "$3" = "true" ]; then
212+
write_log "setting alternatives"
213+
for i in $(ls "$JRI_DIR/bin"); do
214+
update-alternatives --install "/usr/bin/$i" "$i" "$JRI_DIR/bin/$i" "$JRI_PRIORITY"
215+
done
216+
JAVA_REAL_EXE="$(which java)"
217+
else
218+
JAVA_REAL_EXE="$2/bin/java"
219+
fi
190220

191-
JAVA_REAL_EXE="$(which java)"
192221
CLASSLIST="$JRI_CLASSLIST"
193222

194223
write_log "dumping java cds"
@@ -198,6 +227,7 @@ function java_install_jri() {
198227

199228
########################################
200229
# Install the latest Debian armhf java
230+
# $1 => package names
201231
function java_install_ppa() {
202232
write_log "installing jre from debian repo"
203233

@@ -213,10 +243,12 @@ function java_install_ppa() {
213243

214244
# workaround some weird bug
215245
mkdir -p /usr/lib/jvm/java-8-openjdk-armhf/jre/lib/arm/
246+
mkdir -p /usr/lib/jvm/java-8-openjdk-armhf/lib/arm/
216247
ln -s client /usr/lib/jvm/java-8-openjdk-armhf/jre/lib/arm/server
248+
ln -s client /usr/lib/jvm/java-8-openjdk-armhf/lib/arm/server
217249

218250
# install package
219-
apt-get install --yes --no-install-recommends -t "$JRE_REPO_NAME" $JRE_PKGS || return $?
251+
apt-get install --yes --no-install-recommends -t "$JRE_REPO_NAME" $1 || return $?
220252

221253
JAVA_REAL_EXE="$(which java)"
222254
}
@@ -279,7 +311,12 @@ elif [ "$1" = "update" ]; then
279311

280312
elif [ "$1" = "java" ]; then
281313
java_find || exit $?
282-
java_install || exit $?
314+
java_install small || exit $?
315+
print_java
316+
exit 0
317+
318+
elif [ "$1" = "fulljdk" ]; then
319+
java_install full || exit $?
283320
print_java
284321
exit 0
285322

installer.sh

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ function print_info_header() {
1919
######################################
2020
# Set global configuration variables
2121
function set_configuration() {
22+
# jri
23+
JDK_URL="https://ci.adoptopenjdk.net/view/ev3dev/job/openjdk11_build_ev3_linux/lastSuccessfulBuild/artifact/build/jdk-ev3.tar.gz"
24+
JDK_DIR="/opt/jdk-11-ev3"
25+
2226
# packages
2327
OPENCV_PKGS="libopencv2.4-java libopenmpt0"
2428
RXTX_PKGS="librxtx-java"
2529
JRI_PKGS="jri-11-ev3"
2630
JRE_PKGS="openjdk-11-jre-headless"
31+
JDK_PKGS="openjdk-11-jdk-headless"
2732

2833
# class lists
2934
JRI_CLASSLIST="/usr/lib/jvm/jri-11-ev3/lib/classlist"
@@ -107,6 +112,7 @@ function do_help() {
107112
echo "Installer options:"
108113
echo "sudo ./installer.sh update ... update APT repositories"
109114
echo "sudo ./installer.sh java ... installs Java"
115+
echo "sudo ./installer.sh fulljdk ... installs full JDK on the brick (not normally necessary)"
110116
echo "sudo ./installer.sh opencv ... installs OpenCV libraries"
111117
echo "sudo ./installer.sh rxtx ... installs RXTX library"
112118
echo "sudo ./installer.sh javaLibs ... installs ev3dev-lang-java libraries"
@@ -131,13 +137,27 @@ function do_rxtx() {
131137
# Install Java by a platform specific way
132138
function java_install() {
133139
if [ "$PLATFORM" = "ev3" ]; then
134-
java_install_jri
135-
return $?
140+
if [ "$1" == "small" ]; then
141+
java_install_jri
142+
return $?
143+
elif [ "$1" == "full" ]; then
144+
java_install_jri_jdk "$JDK_URL" "$JDK_DIR" "false" "jdk"
145+
return $?
146+
else
147+
return 1
148+
fi
136149
elif [ "$PLATFORM" = "brickpi" ] ||
137150
[ "$PLATFORM" = "brickpi3" ] ||
138151
[ "$PLATFORM" = "pistorms" ]; then
139-
java_install_ppa
140-
return $?
152+
if [ "$1" == "small" ]; then
153+
java_install_ppa "$JRE_PKGS"
154+
return $?
155+
elif [ "$1" == "full" ]; then
156+
java_install_ppa "$JDK_PKGS"
157+
return $?
158+
else
159+
return 1
160+
fi
141161
fi
142162
}
143163

@@ -160,11 +180,49 @@ function java_find() {
160180
JAVA_VERSION_RAW="$("$JAVA_REAL_EXE" -version 2>&1)"
161181
JAVA_VERSION="$(echo "$JAVA_VERSION_RAW" | awk -F '"' '/version/ {print $2}')"
162182

163-
echo "Installed Java version: '${JAVA_VERSION}', installing anyway."
183+
echo "Installed Java version: '${JAVA_VERSION}', proceeding with installation."
164184
write_log "old java ver: $JAVA_VERSION"
165185
return 0
166186
}
167187

188+
######################################
189+
# Install the latest OpenJDK for EV3
190+
# $1 => source URL
191+
# $2 => destination directory
192+
# $3 => if alternatives should be updated (true/false)
193+
# $4 => in-archive directory name
194+
function java_install_jri_jdk() {
195+
write_log "installing java manually from jenkins"
196+
197+
if [ "$3" = "true" ]; then
198+
for i in "$(ls "$JRI_DIR/bin")"; do
199+
update-alternatives --remove "$i" "$JRI_DIR/bin/$i" || true
200+
done
201+
fi
202+
rm -rf "$2" /tmp/java-extract || true
203+
mkdir -p /tmp/java-extract
204+
205+
wget -nv "$1" -O /tmp/java-extract/pkg.tar.gz || return $?
206+
tar -C /tmp/java-extract -xf /tmp/java-extract/pkg.tar.gz
207+
mv "/tmp/java-extract/$4" "$2"
208+
209+
if [ "$3" = "true" ]; then
210+
write_log "setting alternatives"
211+
for i in $(ls "$JRI_DIR/bin"); do
212+
update-alternatives --install "/usr/bin/$i" "$i" "$JRI_DIR/bin/$i" "$JRI_PRIORITY"
213+
done
214+
JAVA_REAL_EXE="$(which java)"
215+
else
216+
JAVA_REAL_EXE="$2/bin/java"
217+
fi
218+
219+
CLASSLIST="$JRI_CLASSLIST"
220+
221+
write_log "dumping java cds"
222+
"$JAVA_REAL_EXE" -Xshare:dump
223+
return $?
224+
}
225+
168226
######################################
169227
# Install the latest OpenJDK for EV3
170228
function java_install_jri() {
@@ -178,6 +236,7 @@ function java_install_jri() {
178236

179237
########################################
180238
# Install the latest Debian armhf java
239+
# $1 => package names
181240
function java_install_ppa() {
182241
write_log "installing jre from debian repo"
183242

@@ -192,7 +251,7 @@ function java_install_ppa() {
192251
apt-get update || return $?
193252

194253
# install package
195-
apt-get install --yes --no-install-recommends -t "$JRE_REPO_NAME" $JRE_PKGS || return $?
254+
apt-get install --yes --no-install-recommends -t "$JRE_REPO_NAME" $1 || return $?
196255

197256
JAVA_REAL_EXE="$(which java)"
198257
}
@@ -255,7 +314,12 @@ elif [ "$1" = "update" ]; then
255314

256315
elif [ "$1" = "java" ]; then
257316
java_find || exit $?
258-
java_install || exit $?
317+
java_install small || exit $?
318+
print_java
319+
exit 0
320+
321+
elif [ "$1" = "fulljdk" ]; then
322+
java_install full || exit $?
259323
print_java
260324
exit 0
261325

tests/test.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ doTest opencv
4242
doTest rxtx
4343
doTest javaLibs
4444
doTest appcds
45+
doTest fulljdk
4546

4647
echo
4748
echo "#########################################################"
@@ -53,6 +54,7 @@ doTest opencv
5354
doTest rxtx
5455
doTest javaLibs
5556
doTest appcds
57+
doTest fulljdk
5658

5759

5860
echo "Test successful."

0 commit comments

Comments
 (0)