From a079a6281b1ffc641db13a53cd3e044e91c0cd71 Mon Sep 17 00:00:00 2001 From: Syer10 Date: Sun, 1 Dec 2024 18:16:48 -0500 Subject: [PATCH] Customize JRE --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/workflows/publish.yml | 37 +++++++++++++++++++++++++ scripts/bundler.sh | 41 +++++++++++++++++++--------- 3 files changed, 66 insertions(+), 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4eba1156..a314ce3e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -26,7 +26,7 @@ Note that the issue will be automatically closed if you do not fill out the titl - Suwayomi-Server version: (Example: v1.1.1-r1535-win32) - Server Operating System: (Example: Ubuntu 20.04) - Server Desktop Environment: N/A or (Example: Gnome 40) -- Server JVM version: bundled with win32 or (Example: Java 8 Update 281 or OpenJDK 8u281) +- Server JVM version: bundled with win32 or (Example: Java 21.0.5 or Temurin 21.0.5) - Client Operating System: - Client Web Browser: (Example: Google Chrome 89.0.4389.82) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a1db5de3..ee7ef878 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -79,6 +79,37 @@ jobs: path: scripts.tar.gz if-no-files-found: error + jpackage: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-latest + name: linux-x64 + - os: windows-latest + name: windows-x64 + - os: macos-14 + name: macOS-arm64 + - os: macos-13 + name: macOS-x64 + os: [ubuntu-latest, windows-latest, macos-14, macos-13] + + steps: + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' + + - 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 + + - name: Upload JDK package + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.name }}-jre + path: suwa + bundle: strategy: fail-fast: false @@ -101,6 +132,12 @@ jobs: name: jar path: server/build + - name: Download JRE + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.os }}-jre + path: jre + - name: Download icons uses: actions/download-artifact@v4 with: diff --git a/scripts/bundler.sh b/scripts/bundler.sh index 95016de5..1629d684 100755 --- a/scripts/bundler.sh +++ b/scripts/bundler.sh @@ -58,7 +58,9 @@ main() { JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE" ELECTRON="electron-$electron_version-linux-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" - download_jre_and_electron + download_electron + setup_jre + tree "$RELEASE_NAME" RELEASE="$RELEASE_NAME.tar.gz" make_linux_bundle @@ -72,7 +74,9 @@ main() { JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE" ELECTRON="electron-$electron_version-darwin-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" - download_jre_and_electron + download_electron + setup_jre + tree "$RELEASE_NAME" RELEASE="$RELEASE_NAME.zip" make_macos_bundle @@ -86,7 +90,9 @@ main() { JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE" ELECTRON="electron-$electron_version-darwin-arm64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" - download_jre_and_electron + download_electron + setup_jre + tree "$RELEASE_NAME" RELEASE="$RELEASE_NAME.zip" make_macos_bundle @@ -100,7 +106,9 @@ main() { JRE_URL="https://github.com/adoptium/temurin21-binaries/releases/download/$JRE_RELEASE/$JRE" ELECTRON="electron-$electron_version-win32-x64.zip" ELECTRON_URL="https://github.com/electron/electron/releases/download/$electron_version/$ELECTRON" - download_jre_and_electron + download_electron + setup_jre + tree "$RELEASE_NAME" RELEASE="$RELEASE_NAME.zip" make_windows_bundle @@ -130,14 +138,23 @@ download_launcher() { mv "Suwayomi-Launcher.jar" "$RELEASE_NAME/Suwayomi-Launcher.jar" } -download_jre_and_electron() { - if [ ! -f "$JRE" ]; then - curl -L "$JRE_URL" -o "$JRE" - fi +download_electron() { if [ ! -f "$ELECTRON" ]; then curl -L "$ELECTRON_URL" -o "$ELECTRON" fi + unzip "$ELECTRON" -d "$RELEASE_NAME/electron/" +} + +setup_jre() { + if [ -d "./jre" ]; then + mv "./jre" "$RELEASE_NAME/jre" + return + fi + if [ ! -f "$JRE" ]; then + curl -L "$JRE_URL" -o "$JRE" + fi + local ext="${JRE##*.}" if [ "$ext" = "zip" ]; then unzip "$JRE" @@ -145,11 +162,6 @@ download_jre_and_electron() { tar xvf "$JRE" fi mv "$JRE_DIR" "$RELEASE_NAME/jre" - unzip "$ELECTRON" -d "$RELEASE_NAME/electron/" - - mkdir "$RELEASE_NAME/bin" - - tree } copy_linux_package_assets_to() { @@ -166,6 +178,7 @@ copy_linux_package_assets_to() { } make_linux_bundle() { + mkdir "$RELEASE_NAME/bin" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "scripts/resources/suwayomi-launcher.sh" "$RELEASE_NAME/" cp "scripts/resources/suwayomi-server.sh" "$RELEASE_NAME/" @@ -174,6 +187,7 @@ make_linux_bundle() { } make_macos_bundle() { + mkdir "$RELEASE_NAME/bin" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "scripts/resources/Suwayomi Launcher.command" "$RELEASE_NAME/" @@ -237,6 +251,7 @@ make_windows_bundle() { #WINEARCH=win32 wine "$rcedit" "$RELEASE_NAME/electron/electron.exe" \ # --set-icon "$icon" + mkdir "$RELEASE_NAME/bin" cp "$JAR" "$RELEASE_NAME/bin/Suwayomi-Server.jar" cp "scripts/resources/Suwayomi Launcher.bat" "$RELEASE_NAME"