Move to Zulu JRE (#1675)

* Move `apt` commands behind `$CI`

Same as for the windows command, no need to rerun this every time

* Use fallback to avoid unbound variables

* Scripts: Switch to Zulu JRE

* workflows: Switch to zulu JDK

* fix: Launcher requires sun.awt.* exports

* Update renovate for Zulu
This commit is contained in:
Constantin Piber
2025-10-03 16:37:30 +02:00
committed by GitHub
parent 2e0f72f182
commit 9a9c0532de
10 changed files with 51 additions and 46 deletions

View File

@@ -48,7 +48,7 @@ jobs:
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
java-version: 21 java-version: 21
distribution: 'temurin' distribution: 'zulu'
- name: Setup Gradle - name: Setup Gradle
uses: gradle/actions/setup-gradle@v4 uses: gradle/actions/setup-gradle@v4

View File

@@ -36,7 +36,7 @@ jobs:
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
java-version: 21 java-version: 21
distribution: 'temurin' distribution: 'zulu'
- name: Setup Gradle - name: Setup Gradle
uses: gradle/actions/setup-gradle@v4 uses: gradle/actions/setup-gradle@v4
@@ -97,7 +97,7 @@ jobs:
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
java-version: 21 java-version: 21
distribution: 'temurin' distribution: 'zulu'
- name: Package JDK - name: Package JDK
run: jlink --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.prefs,java.scripting,java.se,java.security.jgss,java.security.sasl,java.sql,java.transaction.xa,java.xml,jdk.attach,jdk.crypto.ec,jdk.jdi,jdk.management,jdk.net,jdk.random,jdk.unsupported,jdk.unsupported.desktop,jdk.zipfs --output suwa --strip-debug --no-man-pages --no-header-files --compress=2 run: jlink --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.prefs,java.scripting,java.se,java.security.jgss,java.security.sasl,java.sql,java.transaction.xa,java.xml,jdk.attach,jdk.crypto.ec,jdk.jdi,jdk.management,jdk.net,jdk.random,jdk.unsupported,jdk.unsupported.desktop,jdk.zipfs --output suwa --strip-debug --no-man-pages --no-header-files --compress=2

View File

@@ -37,7 +37,7 @@ jobs:
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
java-version: 21 java-version: 21
distribution: 'temurin' distribution: 'zulu'
- name: Setup Gradle - name: Setup Gradle
uses: gradle/actions/setup-gradle@v4 uses: gradle/actions/setup-gradle@v4
@@ -99,7 +99,7 @@ jobs:
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
java-version: 21 java-version: 21
distribution: 'temurin' distribution: 'zulu'
- name: Package JDK - name: Package JDK
run: jlink --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.prefs,java.scripting,java.se,java.security.jgss,java.security.sasl,java.sql,java.transaction.xa,java.xml,jdk.attach,jdk.crypto.ec,jdk.jdi,jdk.management,jdk.net,jdk.random,jdk.unsupported,jdk.unsupported.desktop,jdk.zipfs --output suwa --strip-debug --no-man-pages --no-header-files --compress=2 run: jlink --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.prefs,java.scripting,java.se,java.security.jgss,java.security.sasl,java.sql,java.transaction.xa,java.xml,jdk.attach,jdk.crypto.ec,jdk.jdi,jdk.management,jdk.net,jdk.random,jdk.unsupported,jdk.unsupported.desktop,jdk.zipfs --output suwa --strip-debug --no-man-pages --no-header-files --compress=2

View File

@@ -61,7 +61,7 @@ This structure is chosen to
### Prerequisites ### Prerequisites
You need these software packages installed in order to build the project You need these software packages installed in order to build the project
- Java Development Kit version 21 or newer(we suggest using Temurin instead of Oracle JDK) - Java Development Kit version 21 or newer(we suggest using Zulu or Temurin instead of Oracle JDK)
### building the full-blown jar (Suwayomi-Server + Suwayomi-WebUI bundle) ### building the full-blown jar (Suwayomi-Server + Suwayomi-WebUI bundle)
Run `./gradlew server:downloadWebUI server:shadowJar`, the resulting built jar file will be `server/build/Suwayomi-Server-vX.Y.Z-rxxx.jar`. Run `./gradlew server:downloadWebUI server:shadowJar`, the resulting built jar file will be `server/build/Suwayomi-Server-vX.Y.Z-rxxx.jar`.

View File

@@ -13,9 +13,16 @@
"matchStrings": [ "matchStrings": [
"JRE_RELEASE=[\"'](?<currentValue>.+?)[\"']\\s+" "JRE_RELEASE=[\"'](?<currentValue>.+?)[\"']\\s+"
], ],
"datasourceTemplate": "github-releases", "datasourceTemplate": "custom.zulu",
"depNameTemplate": "adoptium/temurin21-binaries", "versioningTemplate": "regex:^(?<major>\\d+)\.(?<minor>\\d+)\.(?<patch>\\d+).*$"
"versioningTemplate": "regex:^jdk-?(?<major>\\d+).(?<minor>\\d+).+?(?<patch>[\\d+]+)$"
} }
] ],
"customDatasources": {
"zulu": {
"defaultRegistryUrlTemplate": "https://api.azul.com/metadata/v1/zulu/packages?availability_types=ca&release_status=both&java_package_type=jre&crac_supported=false&javafx_bundled=false&java_version=21&arch=x86&os=linux&archive_type=zip&page_size=1000&include_fields=java_package_features,release_status,support_term,os,arch,hw_bitness,abi,java_package_type,javafx_bundled,sha256_hash,cpu_gen,size,archive_type,certifications,lib_c_type,crac_supported&page=1&azul_com=true",
"transformTemplates": [
"{\"releases\": $$.$join([$join($map(distro_version[[0..2]], $string), \".\"), \"_\", $join($map(java_version, $string), \".\")])}"
]
}
}
} }

View File

@@ -42,6 +42,10 @@ main() {
gcc -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -shared scripts/resources/catch_abort.c -lpthread -o scripts/resources/catch_abort.so gcc -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -shared scripts/resources/catch_abort.c -lpthread -o scripts/resources/catch_abort.so
fi fi
JRE_ZULU="21.44.17_21.0.8"
JRE_RELEASE="jre${JRE_ZULU#*_}" # e.g. jre21.0.8
ZULU_RELEASE="zulu${JRE_ZULU%_*}" # e.g. zulu21.44.17
case "$OS" in case "$OS" in
debian-all) debian-all)
RELEASE="$RELEASE_NAME.deb" RELEASE="$RELEASE_NAME.deb"
@@ -49,11 +53,9 @@ main() {
move_release_to_output_dir move_release_to_output_dir
;; ;;
appimage) appimage)
# https://github.com/adoptium/temurin21-binaries/releases/ JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-linux_x64.zip"
JRE_RELEASE="jdk-21.0.8+9" JRE_DIR="${JRE%.*}"
JRE="OpenJDK21U-jre_x64_linux_hotspot_$(echo "$JRE_RELEASE" | sed 's/jdk//;s/-//g;s/+/_/g').tar.gz" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
JRE_DIR="$JRE_RELEASE-jre"
JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE"
setup_jre setup_jre
RELEASE="$RELEASE_NAME.AppImage" RELEASE="$RELEASE_NAME.AppImage"
@@ -67,11 +69,9 @@ main() {
move_release_to_output_dir move_release_to_output_dir
;; ;;
linux-x64) linux-x64)
# https://github.com/adoptium/temurin21-binaries/releases/ JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-linux_x64.zip"
JRE_RELEASE="jdk-21.0.8+9" JRE_DIR="${JRE%.*}"
JRE="OpenJDK21U-jre_x64_linux_hotspot_$(echo "$JRE_RELEASE" | sed 's/jdk//;s/-//g;s/+/_/g').tar.gz" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
JRE_DIR="$JRE_RELEASE-jre"
JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE"
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
@@ -83,11 +83,9 @@ main() {
move_release_to_output_dir move_release_to_output_dir
;; ;;
macOS-x64) macOS-x64)
# https://github.com/adoptium/temurin21-binaries/releases/ JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-macosx_x64.zip"
JRE_RELEASE="jdk-21.0.8+9" JRE_DIR="${JRE%.*}"
JRE="OpenJDK21U-jre_x64_mac_hotspot_$(echo "$JRE_RELEASE" | sed 's/jdk//;s/-//g;s/+/_/g').tar.gz" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
JRE_DIR="$JRE_RELEASE-jre"
JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE"
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
@@ -99,11 +97,9 @@ main() {
move_release_to_output_dir move_release_to_output_dir
;; ;;
macOS-arm64) macOS-arm64)
# https://github.com/adoptium/temurin21-binaries/releases/ JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-macosx_aarch64.zip"
JRE_RELEASE="jdk-21.0.8+9" JRE_DIR="${JRE%.*}"
JRE="OpenJDK21U-jre_aarch64_mac_hotspot_$(echo "$JRE_RELEASE" | sed 's/jdk//;s/-//g;s/+/_/g').tar.gz" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
JRE_DIR="$JRE_RELEASE-jre"
JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE"
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
@@ -115,11 +111,9 @@ main() {
move_release_to_output_dir move_release_to_output_dir
;; ;;
windows-x64) windows-x64)
# https://github.com/adoptium/temurin21-binaries/releases/ JRE="$ZULU_RELEASE-ca-$JRE_RELEASE-win_x64.zip"
JRE_RELEASE="jdk-21.0.8+9" JRE_DIR="${JRE%.*}"
JRE="OpenJDK21U-jre_x64_windows_hotspot_$(echo "$JRE_RELEASE" | sed 's/jdk//;s/-//g;s/+/_/g').zip" JRE_URL="https://cdn.azul.com/zulu/bin/$JRE"
JRE_DIR="$JRE_RELEASE-jre"
JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE"
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
@@ -232,8 +226,10 @@ make_deb_package() {
sed -i "s/\$pkgver/$RELEASE_VERSION/" "$RELEASE_NAME/$source_dir/debian/changelog" sed -i "s/\$pkgver/$RELEASE_VERSION/" "$RELEASE_NAME/$source_dir/debian/changelog"
sed -i "s/\$pkgrel/1/" "$RELEASE_NAME/$source_dir/debian/changelog" sed -i "s/\$pkgrel/1/" "$RELEASE_NAME/$source_dir/debian/changelog"
sudo apt update if [ "${CI:-}" = true ]; then
sudo apt install devscripts build-essential dh-exec sudo apt update
sudo apt install devscripts build-essential dh-exec
fi
cd "$RELEASE_NAME/$source_dir/" cd "$RELEASE_NAME/$source_dir/"
dpkg-buildpackage --no-sign --build=all dpkg-buildpackage --no-sign --build=all
cd - cd -
@@ -254,8 +250,10 @@ make_appimage() {
cp "scripts/resources/appimage/AppRun" "$RELEASE_NAME/AppRun" cp "scripts/resources/appimage/AppRun" "$RELEASE_NAME/AppRun"
chmod +x "$RELEASE_NAME/AppRun" chmod +x "$RELEASE_NAME/AppRun"
sudo apt update if [ "${CI:-}" = true ]; then
sudo apt install libfuse2 sudo apt update
sudo apt install libfuse2
fi
curl -L $APPIMAGE_URL -o $APPIMAGE_TOOLNAME curl -L $APPIMAGE_URL -o $APPIMAGE_TOOLNAME
chmod +x $APPIMAGE_TOOLNAME chmod +x $APPIMAGE_TOOLNAME
ARCH=x86_64 ./$APPIMAGE_TOOLNAME "$RELEASE_NAME" "$RELEASE" ARCH=x86_64 ./$APPIMAGE_TOOLNAME "$RELEASE_NAME" "$RELEASE"
@@ -267,7 +265,7 @@ make_windows_bundle() {
##./bundler.sh: line 250: wine: command not found ##./bundler.sh: line 250: wine: command not found
## check if running under github actions ## check if running under github actions
#if [ "$CI" = true ]; then #if [ "${CI:-}" = true ]; then
## change electron executable's icon ## change electron executable's icon
#sudo dpkg --add-architecture i386 #sudo dpkg --add-architecture i386
#wget -qO - https://dl.winehq.org/wine-builds/winehq.key \ #wget -qO - https://dl.winehq.org/wine-builds/winehq.key \
@@ -298,7 +296,7 @@ make_windows_bundle() {
} }
make_windows_package() { make_windows_package() {
if [ "$CI" = true ]; then if [ "${CI:-}" = true ]; then
sudo apt update sudo apt update
sudo apt install -y wixl sudo apt install -y wixl
fi fi

View File

@@ -1 +1 @@
start "" jre/bin/javaw -jar Suwayomi-Launcher.jar start "" jre/bin/javaw --add-exports=java.desktop/sun.awt=ALL-UNNAMED -jar Suwayomi-Launcher.jar

View File

@@ -1,3 +1,3 @@
cd "`dirname "$0"`" cd "`dirname "$0"`"
./jre/bin/java -jar Suwayomi-Launcher.jar ./jre/bin/java --add-exports=java.desktop/sun.awt=ALL-UNNAMED -jar Suwayomi-Launcher.jar

View File

@@ -8,7 +8,7 @@ Homepage: https://github.com/Suwayomi/Suwayomi-Server
Package: suwayomi-server Package: suwayomi-server
Architecture: all Architecture: all
Depends: ${misc:Depends}, openjdk-21-jre | openjdk-21-jre-headless | openjdk-21-jdk | openjdk-21-jdk-headless | temurin-21-jre | temurin-21-jdk | zulu21-jre | zulu21-jre-headless | zulu21-jdk | zulu21-jdk-headless | msopenjdk-21 | java-21-amazon-corretto-jdk Depends: ${misc:Depends}, zulu21-jre | zulu21-jre-headless | zulu21-jdk | zulu21-jdk-headless | openjdk-21-jre | openjdk-21-jre-headless | openjdk-21-jdk | openjdk-21-jdk-headless | temurin-21-jre | temurin-21-jdk | msopenjdk-21 | java-21-amazon-corretto-jdk
Description: Manga Reader Description: Manga Reader
A free and open source manga reader server that runs extensions built for Tachiyomi. A free and open source manga reader server that runs extensions built for Tachiyomi.
Suwayomi is an independent Tachiyomi compatible software and is not a Fork of Tachiyomi. Suwayomi is an independent Tachiyomi compatible software and is not a Fork of Tachiyomi.

View File

@@ -1,3 +1,3 @@
#!/bin/sh #!/bin/sh
exec ./jre/bin/java -jar ./Suwayomi-Launcher.jar exec ./jre/bin/java --add-exports=java.desktop/sun.awt=ALL-UNNAMED -jar ./Suwayomi-Launcher.jar