From 22e80e7dac15c56c8c1f3da7578dfc5a9e9533fc Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 11 Jan 2024 22:38:14 +0100 Subject: [PATCH] update local appimage buildscript to download jmods --- dist/linux/appimage/build.sh | 37 +++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/dist/linux/appimage/build.sh b/dist/linux/appimage/build.sh index 0a4b7f65d..894e07c70 100755 --- a/dist/linux/appimage/build.sh +++ b/dist/linux/appimage/build.sh @@ -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 "" \ No newline at end of file +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 ""