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 --"