Parcourir la source

Merge pull request #2105 from cryptomator/feature/gtk2-launcher

Add additional GTK2 launcher to AppImage, fixes #1432
Sebastian Stenzel il y a 3 ans
Parent
commit
d368b01038

+ 7 - 4
.github/workflows/appimage.yml

@@ -61,10 +61,16 @@ jobs:
           --output runtime
           --module-path "${JAVA_HOME}/jmods"
           --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
+          --strip-native-commands
           --no-header-files
           --no-man-pages
           --strip-debug
           --compress=1
+      - name: Prepare additional launcher
+        run: envsubst '${SEMVER_STR} ${REVISION_NUM}' < dist/linux/launcher-gtk2.properties > launcher-gtk2.properties
+        env:
+          SEMVER_STR: ${{  steps.versions.outputs.semVerStr }}
+          REVISION_NUM: ${{  steps.versions.outputs.revNum }}
       - name: Run jpackage
         run: >
           ${JAVA_HOME}/bin/jpackage
@@ -90,12 +96,12 @@ jobs:
           --java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\""
           --java-options "-Dcryptomator.showTrayIcon=false"
           --java-options "-Dcryptomator.buildNumber=\"appimage-${{  steps.versions.outputs.revNum }}\""
+          --add-launcher Cryptomator-gtk2=launcher-gtk2.properties
           --resource-dir dist/linux/resources
       - name: Patch Cryptomator.AppDir
         run: |
           mv appdir/Cryptomator Cryptomator.AppDir
           cp -r dist/linux/appimage/resources/AppDir/* Cryptomator.AppDir/
-          envsubst '${REVISION_NO} ${SEMVER_STR}' < dist/linux/appimage/resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh
           cp dist/linux/common/org.cryptomator.Cryptomator256.png Cryptomator.AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png
           cp dist/linux/common/org.cryptomator.Cryptomator512.png Cryptomator.AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png
           cp dist/linux/common/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg
@@ -107,9 +113,6 @@ jobs:
           ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon
           ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop
           ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
-        env:
-          REVISION_NO: ${{  steps.versions.outputs.revNum }}
-          SEMVER_STR: ${{  steps.versions.outputs.semVerStr }}
       - name: Extract libjffi.so # workaround for https://github.com/cryptomator/cryptomator-linux/issues/27
         run: |
           JFFI_NATIVE_JAR=`ls lib/app/ | grep -e 'jffi-[1-9]\.[0-9]\{1,2\}.[0-9]\{1,2\}-native.jar'`

+ 3 - 0
dist/linux/appimage/build.sh

@@ -20,12 +20,14 @@ ${JAVA_HOME}/bin/jlink \
     --output runtime \
     --module-path "${JAVA_HOME}/jmods" \
     --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr \
+    --strip-native-commands \
     --no-header-files \
     --no-man-pages \
     --strip-debug \
     --compress=1
 
 # create app dir
+envsubst '${SEMVER_STR} ${REVISION_NUM}' < dist/linux/launcher-gtk2.properties > launcher-gtk2.properties
 ${JAVA_HOME}/bin/jpackage \
     --verbose \
     --type app-image \
@@ -48,6 +50,7 @@ ${JAVA_HOME}/bin/jpackage \
     --java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
     --java-options "-Dcryptomator.showTrayIcon=false" \
     --java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NO}\"" \
+    --add-launcher cryptomator-gtk2=launcher-gtk2.properties \
     --resource-dir ../resources
 
 # transform AppDir

+ 5 - 20
dist/linux/appimage/resources/AppDir/bin/cryptomator.sh

@@ -15,26 +15,11 @@ elif command -v pacman &> /dev/null; then # don't forget arch
 	GTK3_PRESENT=`pacman -Qi gtk3 &> /dev/null; echo $?`
 fi
 
-if [ "$GTK2_PRESENT" -eq 0 ] && [ "$GTK3_PRESENT" -ne 0 ]; then
-	GTK_FLAG="-Djdk.gtk.version=2"
-fi
-
 # workaround for https://github.com/cryptomator/cryptomator-linux/issues/27
 export LD_PRELOAD=lib/app/libjffi.so
 
-# start Cryptomator
-./lib/runtime/bin/java \
-	-p "lib/app/mods" \
-	-cp "lib/app/*" \
-	-Dfile.encoding="utf-8" \
-	-Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \
-	-Dcryptomator.pluginDir="~/.local/share/Cryptomator/plugins" \
-	-Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \
-	-Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json" \
-	-Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \
-	-Dcryptomator.buildNumber="appimage-${REVISION_NO}" \
-	-Dcryptomator.appVersion="${SEMVER_STR}" \
-	$GTK_FLAG \
-	-Xss5m \
-	-Xmx256m \
-	-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator
+if [ "$GTK2_PRESENT" -eq 0 ] && [ "$GTK3_PRESENT" -ne 0 ]; then
+	bin/Cryptomator-gtk2
+else
+	bin/Cryptomator
+fi

+ 1 - 0
dist/linux/debian/rules

@@ -19,6 +19,7 @@ override_dh_auto_build:
 	jlink \
 		--output runtime \
 		--add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr \
+		--strip-native-commands \
 		--no-header-files \
 		--no-man-pages \
 		--strip-debug \

+ 12 - 0
dist/linux/launcher-gtk2.properties

@@ -0,0 +1,12 @@
+java-options=-Xss5m \
+            -Xmx256m \
+            -Dfile.encoding=\"utf-8\" \
+            -Dcryptomator.appVersion=\"${SEMVER_STR}\" \
+            -Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\" \
+            -Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\" \
+            -Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\" \
+            -Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\" \
+            -Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\" \
+            -Dcryptomator.showTrayIcon=false \
+            -Dcryptomator.buildNumber=\"appimage-${REVISION_NUM}\" \
+            -Djdk.gtk.version=2

+ 1 - 0
dist/mac/dmg/build.sh

@@ -38,6 +38,7 @@ ${JAVA_HOME}/bin/jlink \
     --output runtime \
     --module-path "${JAVA_HOME}/jmods" \
     --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr \
+    --strip-native-commands \
     --no-header-files \
     --no-man-pages \
     --strip-debug \

+ 1 - 0
dist/win/build.ps1

@@ -42,6 +42,7 @@ if ($clean -and (Test-Path -Path $runtimeImagePath)) {
 	--output runtime `
 	--module-path "$Env:JAVA_HOME/jmods" `
 	--add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr `
+	--strip-native-commands `
 	--no-header-files `
 	--no-man-pages `
 	--strip-debug `