LP1817932 Hatch uses Java 11 + dependency fetcher script
authorBill Erickson <berickxx@gmail.com>
Wed, 27 Feb 2019 16:03:18 +0000 (11:03 -0500)
committerJason Boyer <JBoyer@equinoxinitiative.org>
Fri, 13 Dec 2019 17:59:25 +0000 (12:59 -0500)
Adds a new fetch-deps.sh script for fetching and unpacking Windows
and Linux dependencies.  It fetches OpenJDK 11, OpenJFX 11, and the JSON
library (which was previously fetched only for linux in hatch.sh).

Updates hatch.sh and hatch.bat to reference these new dependencies.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
.gitignore
fetch-deps.sh [new file with mode: 0755]
hatch.bat
hatch.sh
installer/windows/README.adoc

index 04c3020..e4c123b 100644 (file)
@@ -1,6 +1,9 @@
 lib/
+java-jdk/
+javafx-sdk/
 
 *.exe
 *.zip
 *.dmg
-*.app
\ No newline at end of file
+*.app
+*.tar.gz
diff --git a/fetch-deps.sh b/fetch-deps.sh
new file mode 100755 (executable)
index 0000000..87fdbe5
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/bash
+set -eu
+
+# --------------------------------------------------------------------
+# Fetch Java JDK, JavaJFX SDK, and a Java JSON library.  Unpack
+# each to the required location.
+# --------------------------------------------------------------------
+
+JAVA_VERSION=11.0.2
+JDK_DIR="jdk-$JAVA_VERSION"
+JFX_DIR="javafx-sdk-$JAVA_VERSION"
+JDK_DIR_SHORT="java-jdk"
+JFX_DIR_SHORT="javafx-sdk"
+UNZIP="unzip -q"
+
+WIN_JDK_ZIP="openjdk-${JAVA_VERSION}_windows-x64_bin.zip"
+WIN_JFX_ZIP="openjfx-${JAVA_VERSION}_windows-x64_bin-sdk.zip"
+WIN_JDK_URL="https://download.java.net/java/GA/jdk11/9/GPL/$WIN_JDK_ZIP"
+WIN_JFX_URL="https://download2.gluonhq.com/openjfx/$JAVA_VERSION/$WIN_JFX_ZIP"
+
+LINUX_JDK_TAR="openjdk-${JAVA_VERSION}_linux-x64_bin.tar.gz"
+LINUX_JFX_ZIP="openjfx-${JAVA_VERSION}_linux-x64_bin-sdk.zip"
+LINUX_JDK_URL="https://download.java.net/java/GA/jdk11/9/GPL/$LINUX_JDK_TAR"
+LINUX_JFX_URL="https://download2.gluonhq.com/openjfx/$JAVA_VERSION/$LINUX_JFX_ZIP"
+
+JSON_BUILD="20160810"
+JSON_JAR="json-$JSON_BUILD.jar"
+JSON_URL="https://search.maven.org/remotecontent?filepath=org/json/json/$JSON_BUILD/$JSON_JAR"
+
+PLATFORM=$1;
+
+if [ "$PLATFORM" == "windows" ]; then
+
+    if [ ! -d "$JDK_DIR" ]; then
+        if [ ! -f "$WIN_JDK_ZIP" ]; then
+            wget "$WIN_JDK_URL";
+        fi;
+        $UNZIP "$WIN_JDK_ZIP"
+    fi;
+
+    if [ ! -d "$JFX_DIR" ]; then
+        if [ ! -f "$WIN_JFX_ZIP" ]; then
+            wget "$WIN_JFX_URL";
+        fi;
+        $UNZIP "$WIN_JFX_ZIP"
+    fi;
+
+elif [ "$PLATFORM" == "linux" ]; then
+
+    if [ ! -d "$JDK_DIR" ]; then
+        if [ ! -f "$LINUX_JDK_TAR" ]; then
+            wget "$LINUX_JDK_URL";
+        fi;
+        tar -zxf "$LINUX_JDK_TAR"
+    fi;
+
+    if [ ! -d "$JFX_DIR" ]; then
+        if [ ! -f "$LINUX_JFX_ZIP" ]; then
+            wget "$LINUX_JFX_URL";
+        fi;
+        $UNZIP "$LINUX_JFX_ZIP"
+    fi;
+
+else
+    echo "Platform argument required";
+    echo "$0 windows | linux";
+    exit 1;
+fi;
+
+mkdir -p lib
+if [ ! -f lib/$JSON_JAR ]; then
+    echo "Fetching JSON libs..."
+    wget -O lib/$JSON_JAR $JSON_URL
+fi;
+
+rm -rf "$JDK_DIR_SHORT" "$JFX_DIR_SHORT";
+mv "$JDK_DIR" "$JDK_DIR_SHORT";
+mv "$JFX_DIR" "$JFX_DIR_SHORT";
+
+if [ "$PLATFORM" == "windows" ]; then
+    echo "Please remove the downloaded ZIP files before completing the Windows build"
+    echo
+    echo "rm $WIN_JDK_ZIP"
+    echo "rm $WIN_JFX_ZIP"
+    echo
+fi;
+
index dd76b2e..faa6452 100755 (executable)
--- a/hatch.bat
+++ b/hatch.bat
@@ -2,38 +2,13 @@
 REM Windows Hatch Execution Script
 REM @echo off required for STDIO to work with the browser.
 
-REM NOTE: Do not EVER set ERRORLEVEL for any reason; it's a passthrough variable that takes on the current value
-REM of the errorlevel return status but if you assign to it that magic passthrough is broken and it's just set to that value.
-REM This is necessary to do sensible comparisons against it. (such as EQU) The 'if errorlevel' construct is completely bananas.
-REM Also: automatic path testing only looks for 'java' - if you don't have the JDK in your path you'll need to fix that yourself.
-
-REM Assume java executables are in our path
-SET JAVA=java
-SET JAVAC=javac
-SET JAR=jar
-
-REM Optionally override the java path
-REM SET JAVA_HOME="C:\Program Files\Java\jdk1.8.0_111"
-REM SET JAVA=%JAVA_HOME%\bin\java
-REM SET JAVAC=%JAVA_HOME%\bin\javac
-REM SET JAR=%JAVA_HOME%\bin\jar
-
-REM Is anyone there?
-%JAVA% -version 2>nul
-
-IF %ERRORLEVEL% EQU 0 GOTO Huzzah
-
-REM Are you still there?
-SET JAVA=%PROGRAMDATA%\Oracle\Java\javapath\java
-%JAVA% -version 2>nul
-
-IF %ERRORLEVEL% EQU 0 GOTO Huzzah
-
-REM I don't blame you
-EXIT /B %ERRORLEVEL%
-
-REM There you are.
-:Huzzah
+REM Use the locally extracted Java/JFX libs
+SET JAVA_HOME=java-jdk
+SET JAVA=%JAVA_HOME%\bin\java
+SET JAVAC=%JAVA_HOME%\bin\javac
+SET JAR=%JAVA_HOME%\bin\jar
+SET JAVAFX_HOME=javafx-sdk
+SET JAVAFX_MODS=javafx.base,javafx.graphics,javafx.web
 
 REM %~1 means to strip %1 of any surrounding quotes.
 REM This is necessary if you're going to use a construction like "%1" == "etc" because a quoted %1 will
@@ -43,6 +18,7 @@ REM Specifically, "Files was unexpected at this time."
 IF "%~1" == "compile" (
 
     %JAVAC% -cp "lib\*" -Xdiags:verbose^
+        --module-path %JAVAFX_HOME%\lib --add-modules=%JAVAFX_MODS%^
         -d lib src\org\evergreen_ils\hatch\*.java
 
     %JAR% cf lib\hatch.jar -C lib org
@@ -54,16 +30,20 @@ IF "%~1" == "compile" (
 
         %JAVA% -cp "lib\*"^
             -Djava.util.logging.config.file=logging.properties^
+            --module-path %JAVAFX_HOME%\lib --add-modules=%JAVAFX_MODS%^
             org.evergreen_ils.hatch.TestHatch | %JAVA% -cp "lib\*"^
             -Djava.util.logging.config.file=logging.properties^
+            --module-path %JAVAFX_HOME%\lib --add-modules=%JAVAFX_MODS%^
             org.evergreen_ils.hatch.Hatch | %JAVA% -cp "lib\*"^
             -Djava.util.logging.config.file=logging.properties^
+            --module-path %JAVAFX_HOME%\lib --add-modules=%JAVAFX_MODS%^
             org.evergreen_ils.hatch.TestHatch receive
 
     ) ELSE ( REM No options means run Hatch
 
         %JAVA% -cp "lib\*"^
             -Djava.util.logging.config.file=logging.properties^
+            --module-path %JAVAFX_HOME%\lib --add-modules=%JAVAFX_MODS%^
             org.evergreen_ils.hatch.Hatch
 
     )
index e90e8bd..598a068 100755 (executable)
--- a/hatch.sh
+++ b/hatch.sh
@@ -2,31 +2,22 @@
 #
 # Linux/Mac Hatch Execution Script
 
-# Use this for openjdk
-JAVA_HOME=/usr
-# Use this for local extract of Java libs
-#JAVA_HOME=jdk1.8
+# Reference local JDK/JFX bundles.
+JAVA_HOME="./java-jdk"
+JAVAFX_HOME="./javafx-sdk"
+JAFAFX_MODS="--module-path $JAVAFX_HOME/lib --add-modules=javafx.base,javafx.graphics,javafx.web"
 
 JAVA=$JAVA_HOME/bin/java
 JAVAC=$JAVA_HOME/bin/javac
 JAR=$JAVA_HOME/bin/jar
 LOGS=-Djava.util.logging.config.file=logging.properties
-JSON_BUILD="20160810"
-JSON_JAR="json-$JSON_BUILD.jar"
-JSON_URL="https://search.maven.org/remotecontent?filepath=org/json/json/$JSON_BUILD/$JSON_JAR"
 
 COMMAND="$1"
 
 if [ "$COMMAND" == "compile" ]; then
 
-    mkdir -p lib
-    if [ ! -f lib/$JSON_JAR ]; then
-        echo "Fetching JSON libs..."
-        wget -O lib/$JSON_JAR $JSON_URL
-    fi;
-
     $JAVAC -Xdiags:verbose -Xlint:unchecked \
-        -cp lib/\* -d lib src/org/evergreen_ils/hatch/*.java
+        -cp lib/\* -d lib $JAFAFX_MODS src/org/evergreen_ils/hatch/*.java
 
     # Create a JAR file from the compiled class files them remove them.
     $JAR cf lib/hatch.jar -C lib org
@@ -38,12 +29,12 @@ elif [ "$COMMAND" == "test" ]; then
     # 2. Run Hatch and process messages emitted from #1.
     # 3. Run TestHatch in receive mode to log the responses.
 
-    $JAVA "$LOGS" -cp lib/\* org.evergreen_ils.hatch.TestHatch \
-        | $JAVA "$LOGS" -cp lib/\* org.evergreen_ils.hatch.Hatch \
-        | $JAVA "$LOGS" -cp lib/\* org.evergreen_ils.hatch.TestHatch receive
+    $JAVA "$LOGS" -cp lib/\* $JAFAFX_MODS org.evergreen_ils.hatch.TestHatch \
+        | $JAVA "$LOGS" -cp lib/\* $JAFAFX_MODS org.evergreen_ils.hatch.Hatch \
+        | $JAVA "$LOGS" -cp lib/\* $JAFAFX_MODS org.evergreen_ils.hatch.TestHatch receive
 
 else
 
     # run Hatch
-    $JAVA "$LOGS" -cp lib/\* org.evergreen_ils.hatch.Hatch
+    $JAVA "$LOGS" -cp lib/\* $JAFAFX_MODS org.evergreen_ils.hatch.Hatch
 fi;
index bca1c2e..24799c9 100644 (file)
@@ -13,12 +13,22 @@ Requirements
 ~~~~~~~~~~~~
 
 1.  NSIS
-3.  JDK or OpenJDK v. 1.8 or higher
+2.  OpenJDK and OpenJFX v. 1.11 or higher
+
 
 [[pre-installation]]
 Pre-Installation
 ~~~~~~~~~~~~~~~~
 
+Download the OpenJDK and OpenJFX bundles for Windows since they
+are added directly to the installer.
+
+[source,sh]
+-----------------------------------------------------------------------------
+
+-----------------------------------------------------------------------------
+
+
 [[compiling-hatch]]
 Compiling Hatch
 ^^^^^^^^^^^^^^^
@@ -132,4 +142,4 @@ https://HOSTNAME/eg/staff/admin/workstation/print/config
 2.  The ``Select Printer'' drop-down should show your printer(s).
 3.  The various printer attribute selectors should show values
 supported +
-by the selected printer.
\ No newline at end of file
+by the selected printer.