|
@@ -8,11 +8,14 @@ REVISION_NO=`git rev-list --count HEAD`
|
|
|
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
|
|
|
command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found."; exit 1; }
|
|
|
command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; }
|
|
|
+command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip not found."; exit 1; }
|
|
|
|
|
|
VERSION=$(mvn -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)
|
|
|
SEMVER_STR=${VERSION}
|
|
|
MACHINE_TYPE=$(uname -m)
|
|
|
|
|
|
+if [[ ! "${MACHINE_TYPE}" =~ x86_64|aarch64 ]]; then echo "Platform ${MACHINE_TYPE} not supported"; exit 1; fi
|
|
|
+
|
|
|
mvn -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR}
|
|
|
|
|
|
# compile
|
|
@@ -20,11 +23,39 @@ mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests
|
|
|
cp ../../../LICENSE.txt ../../../target
|
|
|
cp ../../../target/cryptomator-*.jar ../../../target/mods
|
|
|
|
|
|
+
|
|
|
+# download javaFX jmods
|
|
|
+OPENJFX_URL='https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_linux-x64_bin-jmods.zip' #by default we assume x64
|
|
|
+OPENJFX_SHA='f522ac2ae4bdd61f0219b7b8d2058ff72a22f36a44378453bcfdcd82f8f5e08c'
|
|
|
+OPENJFX_URL_aarch64='https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_linux-aarch64_bin-jmods.zip'
|
|
|
+OPENJFX_SHA_aarch64='c0d80ebbe0aab404ef9ad8b46c05bf533a1e40b39b2720eebd9238d81f6326ca'
|
|
|
+
|
|
|
+if [[ "${MACHINE_TYPE}" = "aarch64" ]]; then
|
|
|
+ OPENJFX_URL="${OPENJFX_URL_aarch64}";
|
|
|
+ OPENJFX_SHA="${OPENJFX_SHA_aarch64}";
|
|
|
+fi
|
|
|
+
|
|
|
+curl -L ${OPENJFX_URL} -o openjfx-jmods.zip
|
|
|
+echo "${OPENJFX_SHA} openjfx-jmods.zip" | shasum -a256 --check
|
|
|
+mkdir -p openjfx-jmods
|
|
|
+unzip -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
|
|
|
+JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
|
|
|
+JMOD_VERSION=${JMOD_VERSION#*@}
|
|
|
+JMOD_VERSION=${JMOD_VERSION%%.*}
|
|
|
+POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
|
|
|
+POM_JFX_VERSION=${POM_JFX_VERSION#*@}
|
|
|
+POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
|
|
|
+if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then
|
|
|
+ >&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION})"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+
|
|
|
# add runtime
|
|
|
${JAVA_HOME}/bin/jlink \
|
|
|
--verbose \
|
|
|
--output runtime \
|
|
|
- --module-path "${JAVA_HOME}/jmods" \
|
|
|
+ --module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
|
|
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
|
|
|
--strip-native-commands \
|
|
|
--no-header-files \
|
|
@@ -97,5 +128,5 @@ chmod +x /tmp/appimagetool.AppImage
|
|
|
echo ""
|
|
|
echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${MACHINE_TYPE}.AppImage"
|
|
|
echo ""
|
|
|
-echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir jni runtime squashfs-root; rm launcher-gtk2.properties /tmp/appimagetool.AppImage"
|
|
|
-echo ""
|
|
|
+echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir runtime squashfs-root openjfx-jmods; rm launcher-gtk2.properties /tmp/appimagetool.AppImage openjfx-jmods.zip"
|
|
|
+echo ""
|