diff --git a/scripts/bundler.sh b/scripts/bundler.sh index b620982c..e3be1f02 100755 --- a/scripts/bundler.sh +++ b/scripts/bundler.sh @@ -49,6 +49,7 @@ main() { case "$OS" in debian-all) RELEASE="$RELEASE_NAME.deb" + download_jogamp "linux-*" # it's easier to bundle them ourselves than to handle Debian's path conventions make_deb_package move_release_to_output_dir ;; @@ -56,6 +57,7 @@ main() { JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-linux_x64.zip" JRE_DIR="${JRE%.*}" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE" + download_jogamp "linux-amd64" setup_jre RELEASE="$RELEASE_NAME.AppImage" @@ -75,6 +77,7 @@ main() { ELECTRON="electron-$electron_version-linux-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" download_electron + download_jogamp "linux-amd64" setup_jre tree "$RELEASE_NAME" @@ -89,6 +92,7 @@ main() { ELECTRON="electron-$electron_version-darwin-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" download_electron + download_jogamp "macosx-universal" setup_jre tree "$RELEASE_NAME" @@ -103,6 +107,7 @@ main() { ELECTRON="electron-$electron_version-darwin-arm64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" download_electron + download_jogamp "macosx-universal" setup_jre tree "$RELEASE_NAME" @@ -117,6 +122,7 @@ main() { ELECTRON="electron-$electron_version-win32-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" download_electron + download_jogamp "windows-amd64" setup_jre tree "$RELEASE_NAME" @@ -148,6 +154,18 @@ download_launcher() { mv "Suwayomi-Launcher.jar" "$RELEASE_NAME/Suwayomi-Launcher.jar" } +download_jogamp() { + local platform="$1" + if [ ! -f jogamp-all-platforms.7z ]; then + curl "https://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z" -o jogamp-all-platforms.7z + fi + + 7z x jogamp-all-platforms.7z "jogamp-all-platforms/lib/$platform/" + mkdir -p "$RELEASE_NAME/natives/" + mv jogamp-all-platforms/lib/* "$RELEASE_NAME/natives/" + rm -rf jogamp-all-platforms +} + download_electron() { if [ ! -f "$ELECTRON" ]; then curl -L "$ELECTRON_URL" -o "$ELECTRON" @@ -216,6 +234,7 @@ make_deb_package() { local upstream_source="suwayomi-server_$RELEASE_VERSION.orig.tar.gz" mkdir "$RELEASE_NAME/$source_dir/" + mv "$RELEASE_NAME/natives" "$RELEASE_NAME/$source_dir/natives" mv "$RELEASE_NAME/Suwayomi-Launcher.jar" "$RELEASE_NAME/$source_dir/Suwayomi-Launcher.jar" cp "$JAR" "$RELEASE_NAME/$source_dir/Suwayomi-Server.jar" copy_linux_package_assets_to "$RELEASE_NAME/$source_dir/" @@ -307,6 +326,9 @@ make_windows_package() { find "$RELEASE_NAME/electron" \ | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ --directory-ref electron --component-group electron >"$RELEASE_NAME/electron.wxs" + find "$RELEASE_NAME/natives" \ + | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ + --directory-ref natives --component-group natives >"$RELEASE_NAME/natives.wxs" find "$RELEASE_NAME/bin" \ | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ @@ -317,7 +339,7 @@ make_windows_package() { wixl -D ProductVersion="$RELEASE_VERSION" -D SourceDir="$RELEASE_NAME" \ -D Icon="$icon" --arch "$arch" "scripts/resources/msi/suwayomi-server-$arch.wxs" \ - "$RELEASE_NAME/jre.wxs" "$RELEASE_NAME/electron.wxs" "$RELEASE_NAME/bin.wxs" -o "$RELEASE" + "$RELEASE_NAME/jre.wxs" "$RELEASE_NAME/electron.wxs" "$RELEASE_NAME/natives.wxs" "$RELEASE_NAME/bin.wxs" -o "$RELEASE" } # Error handler diff --git a/scripts/resources/appimage/AppRun b/scripts/resources/appimage/AppRun index 71100790..31594b79 100644 --- a/scripts/resources/appimage/AppRun +++ b/scripts/resources/appimage/AppRun @@ -1,3 +1,4 @@ #!/bin/sh +cd "$APPDIR" exec $APPDIR/jre/bin/java -jar $APPDIR/bin/Suwayomi-Server.jar diff --git a/scripts/resources/deb/install b/scripts/resources/deb/install index 0af50245..a64bfb59 100755 --- a/scripts/resources/deb/install +++ b/scripts/resources/deb/install @@ -2,6 +2,7 @@ Suwayomi-Server.jar usr/share/java/suwayomi-server/bin/ Suwayomi-Launcher.jar usr/share/java/suwayomi-server/ +natives/* usr/share/java/suwayomi-server/natives/ suwayomi-server.png usr/share/pixmaps/ suwayomi-server.desktop usr/share/applications/ suwayomi-launcher.desktop usr/share/applications/ diff --git a/scripts/resources/msi/suwayomi-server-x64.wxs b/scripts/resources/msi/suwayomi-server-x64.wxs index 3fe4f788..3d9a6f13 100644 --- a/scripts/resources/msi/suwayomi-server-x64.wxs +++ b/scripts/resources/msi/suwayomi-server-x64.wxs @@ -17,6 +17,7 @@ + @@ -62,6 +63,7 @@ + diff --git a/scripts/resources/pkg/suwayomi-server.sh b/scripts/resources/pkg/suwayomi-server.sh index 981ec5de..fd46edf2 100644 --- a/scripts/resources/pkg/suwayomi-server.sh +++ b/scripts/resources/pkg/suwayomi-server.sh @@ -1,6 +1,7 @@ #!/bin/sh export LD_PRELOAD="/usr/share/java/suwayomi-server/bin/catch_abort.so" +cd /usr/share/java/suwayomi-server/ if [ -z "$DISPLAY" ] && command -v Xvfb >/dev/null; then echo "-- START: Spawning X server using xvfb-run --"