Compare commits

..

7 Commits

Author SHA1 Message Date
Syer10
0cac79f354 Release v2.3.2230 2026-07-01 17:36:21 -04:00
Mitchell Syer
0fd10cc08e Fix chmod attempts on Windows Java (#2156) 2026-07-01 17:23:17 -04:00
Mitchell Syer
87aac38253 Remove jogamp (#2155)
* Remove jogamp from bundler

* Changelog
2026-07-01 16:37:03 -04:00
Mitchell Syer
9ca66c18de Add error handling to bundler (#2154)
* Add error handling to bundler

* Changelog
2026-07-01 14:41:59 -04:00
Syer10
b3c7962503 Release v2.3.2226 2026-07-01 11:57:49 -04:00
schroda
ca93783e72 Fix gql "extension" "extension store" typing (#2151)
The local source, externally installed apks and extensions whose extension store got removed do not have a store. This caused gql to fail because the extensions "extensionStore" was expected to be non-nullable.
2026-07-01 11:51:53 -04:00
Syer10
c1d0df8e3a [skip ci] Changelog fixes 2026-06-30 15:37:29 -04:00
6 changed files with 90 additions and 94 deletions

View File

@@ -42,7 +42,7 @@ body:
label: Suwayomi-Server version label: Suwayomi-Server version
description: You can find your Suwayomi-Server version in **More → About**. description: You can find your Suwayomi-Server version in **More → About**.
placeholder: | placeholder: |
Example: "v2.3.2223" Example: "v2.3.2230"
validations: validations:
required: true required: true

View File

@@ -15,6 +15,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed ### Fixed
- . - .
## [v2.3.2230] - 2026-07-01
### Fixed
- (**Extension/API**) Fix GQL handling of extensions without an extension store
- (**Build/Bundler**) Fix build continuing if errors happen
- (**Build/Bundler**) Remove jogamp from build script
- (**Build/Bundler**) Fix chmod attempts on Windows Java
## [v2.3.2223] + [WebUI: v20260509.01] - 2026-06-30 ## [v2.3.2223] + [WebUI: v20260509.01] - 2026-06-30
### Major Changes ### Major Changes
@@ -25,8 +33,10 @@ This allows you to sync your server manga with other Mihon-based forks! As long
#### Support Extension API v1.6 #### Support Extension API v1.6
This update allows Suwayomi to load and use v1.6 extensions, it is a minor improvement over the existing 1.4 extension API that cleans up much of what we had! It is the basis of future extension APIs that will allow for further development. This update allows Suwayomi to load and use v1.6 extensions, it is a minor improvement over the existing 1.4 extension API that cleans up much of what we had! It is the basis of future extension APIs that will allow for further development.
This also allows us to move to Mihon's Extension Store system and replace our Extension Repo system. Old Extension Repos are still compatible and will be automatically migrated if they move to the Extension Store system.
> [!WARNING] > [!WARNING]
> Please back up your extension repos, because of the new extension stores system you may lose them in the update process and may need to re-add them. > Please back up your Extension Repos, because of the new Extension Stores system you may lose them in the update process and may need to re-add them.
### Added ### Added
- (**Sync**) Added [SyncYomi](https://github.com/syncyomi/syncyomi) support - (**Sync**) Added [SyncYomi](https://github.com/syncyomi/syncyomi) support
@@ -476,8 +486,9 @@ Huge thanks to @martinek who pulled the most of the weight this release!
<!-- SERVER LINKS --> <!-- SERVER LINKS -->
[unreleased]: https://github.com/suwayomi/suwayomi-server/compare/v2.3.2223...HEAD [unreleased]: https://github.com/suwayomi/suwayomi-server/compare/v2.3.2230...HEAD
[v2.3.2223]: https://github.com/suwayomi/suwayomi-server/compare/v2.1.2100...v2.3.2223 [v2.3.2230]: https://github.com/suwayomi/suwayomi-server/compare/v2.3.2223...v2.3.2230
[v2.3.2223]: https://github.com/suwayomi/suwayomi-server/compare/v2.2.2100...v2.3.2223
[v2.2.2100]: https://github.com/suwayomi/suwayomi-server/compare/v2.1.1867...v2.2.2100 [v2.2.2100]: https://github.com/suwayomi/suwayomi-server/compare/v2.1.1867...v2.2.2100
[v2.1.1867]: https://github.com/suwayomi/suwayomi-server/compare/v2.0.1727...v2.1.1867 [v2.1.1867]: https://github.com/suwayomi/suwayomi-server/compare/v2.0.1727...v2.1.1867
[v2.0.1727]: https://github.com/suwayomi/suwayomi-server/compare/v1.1.1...v2.0.1727 [v2.0.1727]: https://github.com/suwayomi/suwayomi-server/compare/v1.1.1...v2.0.1727

View File

@@ -26,7 +26,7 @@ main() {
set -- "${POSITIONAL_ARGS[@]}" set -- "${POSITIONAL_ARGS[@]}"
OS="$1" OS="$1"
JAR="$(ls server/build/*.jar | tail -n1)" JAR="$(ls server/build/*.jar | tail -n1)" || error $LINENO "No JAR found in server/build/" 1
RELEASE_NAME="$(echo "${JAR%.*}" | xargs basename)-$OS" RELEASE_NAME="$(echo "${JAR%.*}" | xargs basename)-$OS"
RELEASE_VERSION=$(echo "$JAR" | grep -oP "v\K[0-9]+\.[0-9]+\.[0-9]+") RELEASE_VERSION=$(echo "$JAR" | grep -oP "v\K[0-9]+\.[0-9]+\.[0-9]+")
#RELEASE_REVISION_NUMBER="$(tmp="${JAR%.*}" && echo "${tmp##*-}" | tr -d r)" #RELEASE_REVISION_NUMBER="$(tmp="${JAR%.*}" && echo "${tmp##*-}" | tr -d r)"
@@ -34,12 +34,12 @@ main() {
# clean temporary directory on function return # clean temporary directory on function return
trap "rm -rf $RELEASE_NAME/" RETURN trap "rm -rf $RELEASE_NAME/" RETURN
mkdir "$RELEASE_NAME/" mkdir "$RELEASE_NAME/" || error $LINENO "Failed to create release directory" 1
download_launcher download_launcher
if [ ! -f scripts/resources/catch_abort.so ]; then if [ ! -f scripts/resources/catch_abort.so ]; then
gcc -fPIC -shared scripts/resources/catch_abort.c -lpthread -o scripts/resources/catch_abort.so gcc -fPIC -shared scripts/resources/catch_abort.c -lpthread -o scripts/resources/catch_abort.so || error $LINENO "Failed to compile catch_abort" 1
fi fi
JRE_ZULU="25.34.17_25.0.3" JRE_ZULU="25.34.17_25.0.3"
@@ -49,7 +49,6 @@ main() {
case "$OS" in case "$OS" in
debian-all) debian-all)
RELEASE="$RELEASE_NAME.deb" RELEASE="$RELEASE_NAME.deb"
download_jogamp "linux-*" # it's easier to bundle them ourselves than to handle Debian's path conventions
make_deb_package make_deb_package
move_release_to_output_dir move_release_to_output_dir
;; ;;
@@ -57,7 +56,6 @@ main() {
JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-linux_x64.zip" JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-linux_x64.zip"
JRE_DIR="${JRE%.*}" JRE_DIR="${JRE%.*}"
JRE_URL="https://cdn.azul.com/zulu/bin/$JRE" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
download_jogamp "linux-amd64"
setup_jre setup_jre
RELEASE="$RELEASE_NAME.AppImage" RELEASE="$RELEASE_NAME.AppImage"
@@ -67,7 +65,7 @@ main() {
linux-assets) linux-assets)
RELEASE="$RELEASE_NAME.tar.gz" RELEASE="$RELEASE_NAME.tar.gz"
copy_linux_package_assets_to "$RELEASE_NAME/" copy_linux_package_assets_to "$RELEASE_NAME/"
tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" || error $LINENO "Failed to create tar.gz" 1
move_release_to_output_dir move_release_to_output_dir
;; ;;
linux-x64) linux-x64)
@@ -77,7 +75,6 @@ main() {
ELECTRON="electron-$electron_version-linux-x64.zip" ELECTRON="electron-$electron_version-linux-x64.zip"
ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON"
download_electron download_electron
download_jogamp "linux-amd64"
setup_jre setup_jre
tree "$RELEASE_NAME" tree "$RELEASE_NAME"
@@ -92,7 +89,6 @@ main() {
ELECTRON="electron-$electron_version-darwin-x64.zip" ELECTRON="electron-$electron_version-darwin-x64.zip"
ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON"
download_electron download_electron
download_jogamp "macosx-universal"
setup_jre setup_jre
tree "$RELEASE_NAME" tree "$RELEASE_NAME"
@@ -107,7 +103,6 @@ main() {
ELECTRON="electron-$electron_version-darwin-arm64.zip" ELECTRON="electron-$electron_version-darwin-arm64.zip"
ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON"
download_electron download_electron
download_jogamp "macosx-universal"
setup_jre setup_jre
tree "$RELEASE_NAME" tree "$RELEASE_NAME"
@@ -122,7 +117,6 @@ main() {
ELECTRON="electron-$electron_version-win32-x64.zip" ELECTRON="electron-$electron_version-win32-x64.zip"
ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON"
download_electron download_electron
download_jogamp "windows-amd64"
setup_jre setup_jre
tree "$RELEASE_NAME" tree "$RELEASE_NAME"
@@ -145,52 +139,50 @@ move_release_to_output_dir() {
if [ -f "$OUTPUT_DIR/$RELEASE" ]; then if [ -f "$OUTPUT_DIR/$RELEASE" ]; then
rm "$OUTPUT_DIR/$RELEASE" rm "$OUTPUT_DIR/$RELEASE"
fi fi
mv "$RELEASE" "$OUTPUT_DIR/" mv "$RELEASE" "$OUTPUT_DIR/" || error $LINENO "Failed to move release to output dir" 1
} }
download_launcher() { download_launcher() {
LAUNCHER_URL=$(curl -sf "https://api.github.com/repos/Suwayomi/Suwayomi-Launcher/releases/latest" | grep "browser_download_url" | grep ".jar" | head -n 1 | cut -d '"' -f 4) LAUNCHER_URL=$(curl -sf "https://api.github.com/repos/Suwayomi/Suwayomi-Launcher/releases/latest" | grep "browser_download_url" | grep ".jar" | head -n 1 | cut -d '"' -f 4)
curl -fL "$LAUNCHER_URL" -o "Suwayomi-Launcher.jar" if [ -z "$LAUNCHER_URL" ]; then
mv "Suwayomi-Launcher.jar" "$RELEASE_NAME/Suwayomi-Launcher.jar" error $LINENO "Failed to determine launcher URL from GitHub API" 1
}
download_jogamp() {
local platform="$1"
if [ ! -f jogamp-all-platforms.7z ]; then
curl -f "https://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z" -o jogamp-all-platforms.7z
fi fi
curl -fL "$LAUNCHER_URL" -o "Suwayomi-Launcher.jar" || error $LINENO "Failed to download launcher JAR" 1
7z x jogamp-all-platforms.7z "jogamp-all-platforms/lib/$platform/" mv "Suwayomi-Launcher.jar" "$RELEASE_NAME/Suwayomi-Launcher.jar" || error $LINENO "Failed to move launcher JAR" 1
mkdir -p "$RELEASE_NAME/natives/"
mv jogamp-all-platforms/lib/* "$RELEASE_NAME/natives/"
rm -rf jogamp-all-platforms
} }
download_electron() { download_electron() {
if [ ! -f "$ELECTRON" ]; then if [ ! -f "$ELECTRON" ]; then
curl -fL "$ELECTRON_URL" -o "$ELECTRON" curl -fL "$ELECTRON_URL" -o "$ELECTRON" || error $LINENO "Failed to download electron" 1
fi fi
unzip "$ELECTRON" -d "$RELEASE_NAME/electron/" unzip "$ELECTRON" -d "$RELEASE_NAME/electron/" || error $LINENO "Failed to extract electron" 1
} }
setup_jre() { setup_jre() {
if [ -d "jre" ]; then if [ -d "jre" ]; then
chmod +x ./jre/bin/java if [ ! -f "./jre/bin/java.exe" ]; then
chmod +x ./jre/lib/jspawnhelper chmod +x ./jre/bin/java || error $LINENO "Failed to set java executable permission" 1
mv "jre" "$RELEASE_NAME/jre" chmod +x ./jre/lib/jspawnhelper || error $LINENO "Failed to set jspawnhelper executable permission" 1
fi
mv "jre" "$RELEASE_NAME/jre" || error $LINENO "Failed to move jre" 1
else else
if [ ! -f "$JRE" ]; then if [ ! -f "$JRE" ]; then
curl -fL "$JRE_URL" -o "$JRE" curl -fL "$JRE_URL" -o "$JRE" || error $LINENO "Failed to download JRE" 1
fi fi
local ext="${JRE##*.}" local ext="${JRE##*.}"
if [ "$ext" = "zip" ]; then if [ "$ext" = "zip" ]; then
unzip "$JRE" unzip "$JRE" || error $LINENO "Failed to extract JRE zip" 1
else else
tar xvf "$JRE" tar xvf "$JRE" || error $LINENO "Failed to extract JRE tar" 1
fi
mv "$JRE_DIR" "$RELEASE_NAME/jre" || error $LINENO "Failed to move extracted JRE" 1
if [ ! -f "$RELEASE_NAME/jre/bin/java.exe" ]; then
chmod +x "$RELEASE_NAME/jre/bin/java" || error $LINENO "Failed to set java executable permission" 1
chmod +x "$RELEASE_NAME/jre/lib/jspawnhelper" || error $LINENO "Failed to set jspawnhelper executable permission" 1
fi fi
mv "$JRE_DIR" "$RELEASE_NAME/jre"
fi fi
} }
@@ -198,31 +190,31 @@ copy_linux_package_assets_to() {
local output_dir local output_dir
output_dir="$(readlink -e "$1" || exit 1)" output_dir="$(readlink -e "$1" || exit 1)"
cp "scripts/resources/pkg/suwayomi-server.sh" "$output_dir/" cp "scripts/resources/pkg/suwayomi-server.sh" "$output_dir/" || error $LINENO "Failed to copy server script" 1
cp "scripts/resources/pkg/suwayomi-server.desktop" "$output_dir/" cp "scripts/resources/pkg/suwayomi-server.desktop" "$output_dir/" || error $LINENO "Failed to copy server desktop file" 1
cp "scripts/resources/pkg/suwayomi-launcher.sh" "$output_dir/" cp "scripts/resources/pkg/suwayomi-launcher.sh" "$output_dir/" || error $LINENO "Failed to copy launcher script" 1
cp "scripts/resources/pkg/suwayomi-launcher.desktop" "$output_dir/" cp "scripts/resources/pkg/suwayomi-launcher.desktop" "$output_dir/" || error $LINENO "Failed to copy launcher desktop file" 1
cp "scripts/resources/pkg/systemd"/* "$output_dir/" cp "scripts/resources/pkg/systemd"/* "$output_dir/" || error $LINENO "Failed to copy systemd files" 1
cp "server/src/main/resources/icon/faviconlogo-128.png" \ cp "server/src/main/resources/icon/faviconlogo-128.png" \
"$output_dir/suwayomi-server.png" "$output_dir/suwayomi-server.png" || error $LINENO "Failed to copy icon" 1
} }
make_linux_bundle() { make_linux_bundle() {
mkdir "$RELEASE_NAME/bin" mkdir "$RELEASE_NAME/bin"
cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" || error $LINENO "Failed to copy server jar" 1
cp "scripts/resources/suwayomi-launcher.sh" "$RELEASE_NAME/" cp "scripts/resources/suwayomi-launcher.sh" "$RELEASE_NAME/" || error $LINENO "Failed to copy launcher script" 1
cp "scripts/resources/suwayomi-server.sh" "$RELEASE_NAME/" cp "scripts/resources/suwayomi-server.sh" "$RELEASE_NAME/" || error $LINENO "Failed to copy server script" 1
cp "scripts/resources/catch_abort.so" "$RELEASE_NAME/bin/" cp "scripts/resources/catch_abort.so" "$RELEASE_NAME/bin/" || error $LINENO "Failed to copy catch_abort" 1
tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" || error $LINENO "Failed to create tar.gz" 1
} }
make_macos_bundle() { make_macos_bundle() {
mkdir "$RELEASE_NAME/bin" mkdir "$RELEASE_NAME/bin"
cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" || error $LINENO "Failed to copy server jar" 1
cp "scripts/resources/Suwayomi Launcher.command" "$RELEASE_NAME/" cp "scripts/resources/Suwayomi Launcher.command" "$RELEASE_NAME/" || error $LINENO "Failed to copy launcher command" 1
tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" tar -I "gzip -9" -cvf "$RELEASE" "$RELEASE_NAME/" || error $LINENO "Failed to create tar.gz" 1
} }
# https://wiki.debian.org/SimplePackagingTutorial # https://wiki.debian.org/SimplePackagingTutorial
@@ -233,28 +225,27 @@ make_deb_package() {
#behind $RELEASE_VERSION is underscore "_" #behind $RELEASE_VERSION is underscore "_"
local upstream_source="suwayomi-server_$RELEASE_VERSION.orig.tar.gz" local upstream_source="suwayomi-server_$RELEASE_VERSION.orig.tar.gz"
mkdir "$RELEASE_NAME/$source_dir/" mkdir "$RELEASE_NAME/$source_dir/" || error $LINENO "Failed to create source directory" 1
mv "$RELEASE_NAME/natives" "$RELEASE_NAME/$source_dir/natives" mv "$RELEASE_NAME/Suwayomi-Launcher.jar" "$RELEASE_NAME/$source_dir/Suwayomi-Launcher.jar" || error $LINENO "Failed to move launcher jar" 1
mv "$RELEASE_NAME/Suwayomi-Launcher.jar" "$RELEASE_NAME/$source_dir/Suwayomi-Launcher.jar" cp "$JAR" "$RELEASE_NAME/$source_dir/Suwayomi-Server.jar" || error $LINENO "Failed to copy server jar" 1
cp "$JAR" "$RELEASE_NAME/$source_dir/Suwayomi-Server.jar"
copy_linux_package_assets_to "$RELEASE_NAME/$source_dir/" copy_linux_package_assets_to "$RELEASE_NAME/$source_dir/"
cp "scripts/resources/catch_abort.so" "$RELEASE_NAME/$source_dir/" cp "scripts/resources/catch_abort.so" "$RELEASE_NAME/$source_dir/" || error $LINENO "Failed to copy catch_abort" 1
tar -I "gzip" -C "$RELEASE_NAME/" -cvf "$upstream_source" "$source_dir" tar -I "gzip" -C "$RELEASE_NAME/" -cvf "$upstream_source" "$source_dir" || error $LINENO "Failed to create source tar.gz" 1
cp -r "scripts/resources/deb/" "$RELEASE_NAME/$source_dir/debian/" cp -r "scripts/resources/deb/" "$RELEASE_NAME/$source_dir/debian/" || error $LINENO "Failed to copy debian resources" 1
sed -i "s/\$pkgver/$RELEASE_VERSION/" "$RELEASE_NAME/$source_dir/debian/changelog" sed -i "s/\$pkgver/$RELEASE_VERSION/" "$RELEASE_NAME/$source_dir/debian/changelog" || error $LINENO "Failed to update changelog" 1
sed -i "s/\$pkgrel/1/" "$RELEASE_NAME/$source_dir/debian/changelog" sed -i "s/\$pkgrel/1/" "$RELEASE_NAME/$source_dir/debian/changelog" || error $LINENO "Failed to update changelog" 1
if [ "${CI:-}" = true ]; then if [ "${CI:-}" = true ]; then
sudo apt update sudo apt update || error $LINENO "Failed to update apt" 1
sudo apt install devscripts build-essential dh-exec sudo apt install devscripts build-essential dh-exec || error $LINENO "Failed to install build deps" 1
fi fi
cd "$RELEASE_NAME/$source_dir/" cd "$RELEASE_NAME/$source_dir/" || error $LINENO "Failed to change directory" 1
dpkg-buildpackage --no-sign --build=all dpkg-buildpackage --no-sign --build=all || error $LINENO "Debian package build failed" 1
cd - cd - || error $LINENO "Failed to return to previous directory" 1
local deb="suwayomi-server_$RELEASE_VERSION-1_all.deb" local deb="suwayomi-server_$RELEASE_VERSION-1_all.deb"
mv "$RELEASE_NAME/$deb" "$RELEASE" mv "$RELEASE_NAME/$deb" "$RELEASE" || error $LINENO "Failed to move resulting .deb" 1
} }
# https://linuxconfig.org/building-a-hello-world-appimage-on-linux # https://linuxconfig.org/building-a-hello-world-appimage-on-linux
@@ -262,20 +253,20 @@ make_appimage() {
local APPIMAGE_URL="https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" local APPIMAGE_URL="https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
local APPIMAGE_TOOLNAME="appimagetool-x86_64.AppImage" local APPIMAGE_TOOLNAME="appimagetool-x86_64.AppImage"
mkdir "$RELEASE_NAME/bin/" mkdir "$RELEASE_NAME/bin/"
cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" || error $LINENO "Failed to copy server jar" 1
cp "scripts/resources/pkg/suwayomi-server.desktop" "$RELEASE_NAME/suwayomi-server.desktop" cp "scripts/resources/pkg/suwayomi-server.desktop" "$RELEASE_NAME/suwayomi-server.desktop" || error $LINENO "Failed to copy desktop file" 1
cp "server/src/main/resources/icon/faviconlogo.png" "$RELEASE_NAME/suwayomi-server.png" cp "server/src/main/resources/icon/faviconlogo.png" "$RELEASE_NAME/suwayomi-server.png" || error $LINENO "Failed to copy icon" 1
cp "scripts/resources/appimage/AppRun" "$RELEASE_NAME/AppRun" cp "scripts/resources/appimage/AppRun" "$RELEASE_NAME/AppRun" || error $LINENO "Failed to copy AppRun" 1
chmod +x "$RELEASE_NAME/AppRun" chmod +x "$RELEASE_NAME/AppRun" || error $LINENO "Failed to make AppRun executable" 1
if [ "${CI:-}" = true ]; then if [ "${CI:-}" = true ]; then
sudo apt update sudo apt update || error $LINENO "Failed to update apt" 1
sudo apt install libfuse2 sudo apt install libfuse2 || error $LINENO "Failed to install libfuse2" 1
fi fi
curl -fL $APPIMAGE_URL -o $APPIMAGE_TOOLNAME curl -fL $APPIMAGE_URL -o $APPIMAGE_TOOLNAME || error $LINENO "Failed to download appimagetool" 1
chmod +x $APPIMAGE_TOOLNAME chmod +x $APPIMAGE_TOOLNAME || error $LINENO "Failed to make appimagetool executable" 1
ARCH=x86_64 ./$APPIMAGE_TOOLNAME "$RELEASE_NAME" "$RELEASE" ARCH=x86_64 ./$APPIMAGE_TOOLNAME "$RELEASE_NAME" "$RELEASE" || error $LINENO "AppImage creation failed" 1
} }
make_windows_bundle() { make_windows_bundle() {
@@ -300,7 +291,7 @@ make_windows_bundle() {
#local rcedit_url="https://github.com/electron/rcedit/releases/download/v0.1.1/$rcedit" #local rcedit_url="https://github.com/electron/rcedit/releases/download/v0.1.1/$rcedit"
## change electron's icon ## change electron's icon
#if [ ! -f "$rcedit" ]; then #if [ ! -f "$rcedit" ]; then
#curl -fL "$rcedit_url" -o "$rcedit" #curl -fL "$rcedit_url" -o "$rcedit" || error $LINENO "Failed to download rcedit" 1
#fi #fi
#local icon="server/src/main/resources/icon/faviconlogo.ico" #local icon="server/src/main/resources/icon/faviconlogo.ico"
@@ -308,38 +299,35 @@ make_windows_bundle() {
# --set-icon "$icon" # --set-icon "$icon"
mkdir "$RELEASE_NAME/bin" mkdir "$RELEASE_NAME/bin"
cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" || error $LINENO "Failed to copy server jar" 1
cp "scripts/resources/Suwayomi Launcher.bat" "$RELEASE_NAME" cp "scripts/resources/Suwayomi Launcher.bat" "$RELEASE_NAME" || error $LINENO "Failed to copy launcher bat" 1
zip -9 -r "$RELEASE" "$RELEASE_NAME" zip -9 -r "$RELEASE" "$RELEASE_NAME" || error $LINENO "Failed to create windows bundle zip" 1
} }
make_windows_package() { make_windows_package() {
if [ "${CI:-}" = true ]; then if [ "${CI:-}" = true ]; then
sudo apt update sudo apt update || error $LINENO "Failed to update apt" 1
sudo apt install -y wixl sudo apt install -y wixl || error $LINENO "Failed to install wixl" 1
fi fi
find "$RELEASE_NAME/jre" \ find "$RELEASE_NAME/jre" \
| wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \
--directory-ref jre --component-group jre >"$RELEASE_NAME/jre.wxs" --directory-ref jre --component-group jre >"$RELEASE_NAME/jre.wxs" || error $LINENO "Failed to heat jre" 1
find "$RELEASE_NAME/electron" \ find "$RELEASE_NAME/electron" \
| wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \
--directory-ref electron --component-group electron >"$RELEASE_NAME/electron.wxs" --directory-ref electron --component-group electron >"$RELEASE_NAME/electron.wxs" || error $LINENO "Failed to heat electron" 1
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" \ find "$RELEASE_NAME/bin" \
| wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \ | wixl-heat --var var.SourceDir -p "$RELEASE_NAME/" \
--directory-ref bin --component-group bin >"$RELEASE_NAME/bin.wxs" --directory-ref bin --component-group bin >"$RELEASE_NAME/bin.wxs" || error $LINENO "Failed to heat bin" 1
local icon="server/src/main/resources/icon/faviconlogo.ico" local icon="server/src/main/resources/icon/faviconlogo.ico"
local arch=${OS##*-} local arch=${OS##*-}
wixl -D ProductVersion="$RELEASE_VERSION" -D SourceDir="$RELEASE_NAME" \ wixl -D ProductVersion="$RELEASE_VERSION" -D SourceDir="$RELEASE_NAME" \
-D Icon="$icon" --arch "$arch" "scripts/resources/msi/suwayomi-server-$arch.wxs" \ -D Icon="$icon" --arch "$arch" "scripts/resources/msi/suwayomi-server-$arch.wxs" \
"$RELEASE_NAME/jre.wxs" "$RELEASE_NAME/electron.wxs" "$RELEASE_NAME/natives.wxs" "$RELEASE_NAME/bin.wxs" -o "$RELEASE" "$RELEASE_NAME/jre.wxs" "$RELEASE_NAME/electron.wxs" "$RELEASE_NAME/bin.wxs" -o "$RELEASE" || error $LINENO "Windows package build failed" 1
} }
# Error handler # Error handler

View File

@@ -2,7 +2,6 @@
Suwayomi-Server.jar usr/share/java/suwayomi-server/bin/ Suwayomi-Server.jar usr/share/java/suwayomi-server/bin/
Suwayomi-Launcher.jar usr/share/java/suwayomi-server/ Suwayomi-Launcher.jar usr/share/java/suwayomi-server/
natives/* usr/share/java/suwayomi-server/natives/
suwayomi-server.png usr/share/pixmaps/ suwayomi-server.png usr/share/pixmaps/
suwayomi-server.desktop usr/share/applications/ suwayomi-server.desktop usr/share/applications/
suwayomi-launcher.desktop usr/share/applications/ suwayomi-launcher.desktop usr/share/applications/

View File

@@ -17,7 +17,6 @@
<Directory Id="INSTALLDIR" Name="Suwayomi-Server" > <Directory Id="INSTALLDIR" Name="Suwayomi-Server" >
<Directory Id="jre"/> <Directory Id="jre"/>
<Directory Id="electron"/> <Directory Id="electron"/>
<Directory Id="natives"/>
<Directory Id="bin"/> <Directory Id="bin"/>
</Directory> </Directory>
</Directory> </Directory>
@@ -63,7 +62,6 @@
<ComponentRef Id="SuwayomiLauncherBAT" /> <ComponentRef Id="SuwayomiLauncherBAT" />
<ComponentRef Id="ProgramMenuDir" /> <ComponentRef Id="ProgramMenuDir" />
<ComponentGroupRef Id="electron" /> <ComponentGroupRef Id="electron" />
<ComponentGroupRef Id="natives" />
</Feature> </Feature>
<Icon Id="Suwayomi.ico" SourceFile="$(var.Icon)" /> <Icon Id="Suwayomi.ico" SourceFile="$(var.Icon)" />

View File

@@ -71,8 +71,8 @@ class ExtensionType(
fun source(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<SourceNodeList> = fun source(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<SourceNodeList> =
dataFetchingEnvironment.getValueFromDataLoader<String, SourceNodeList>("SourcesForExtensionDataLoader", pkgName) dataFetchingEnvironment.getValueFromDataLoader<String, SourceNodeList>("SourcesForExtensionDataLoader", pkgName)
fun extensionStore(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ExtensionStoreType> = fun extensionStore(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ExtensionStoreType?> =
dataFetchingEnvironment.getValueFromDataLoader<String, ExtensionStoreType>("ExtensionStoreDataLoader", storeIndexUrl.orEmpty()) dataFetchingEnvironment.getValueFromDataLoader<String, ExtensionStoreType?>("ExtensionStoreDataLoader", storeIndexUrl.orEmpty())
} }
data class ExtensionNodeList( data class ExtensionNodeList(