From 80c1a6d2af54a6925b88bc0c6dab8dd5a40c25f9 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sat, 30 Sep 2023 22:38:24 +0200 Subject: [PATCH] Switch to Java 21 --- .github/workflows/ci.yml | 4 ++-- .github/workflows/codeql-analysis.yml | 2 +- Containerfile | 2 +- README.md | 2 +- build.gradle.kts | 10 +++++++--- graalvm-config-dir/reflect-config.json | 3 +++ graalvm-config-dir/resource-config.json | 4 ++++ lib/build.gradle.kts | 8 ++++++-- run_tests.sh | 2 +- 9 files changed, 26 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5976805e..1c6bb3c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ '17', '21' ] + java: [ '21' ] steps: - uses: actions/checkout@v4 @@ -48,7 +48,7 @@ jobs: - uses: graalvm/setup-graalvm@v1 with: version: 'latest' - java-version: '17' + java-version: '21' cache: 'gradle' github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build with Gradle diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9bb10c38..ff13469a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -24,7 +24,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 21 - name: Checkout repository uses: actions/checkout@v4 diff --git a/Containerfile b/Containerfile index 1a1167ba..361c2667 100644 --- a/Containerfile +++ b/Containerfile @@ -1,4 +1,4 @@ -FROM docker.io/eclipse-temurin:17-jre +FROM docker.io/azul/zulu-openjdk:21-jre-headless LABEL org.opencontainers.image.source=https://github.com/AsamK/signal-cli LABEL org.opencontainers.image.description="signal-cli provides an unofficial commandline, dbus and JSON-RPC interface for the Signal messenger." diff --git a/README.md b/README.md index a254e267..8d61bc1f 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Windows. There's also a [docker image and some Linux packages](https://github.co System requirements: -- at least Java Runtime Environment (JRE) 17 +- at least Java Runtime Environment (JRE) 21 - native library: libsignal-client The native libs are bundled for x86_64 Linux (with recent enough glibc), Windows and MacOS. For other diff --git a/build.gradle.kts b/build.gradle.kts index 5879660e..68eed610 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,8 +9,12 @@ plugins { version = "0.12.4" java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + + toolchain { + languageVersion.set(JavaLanguageVersion.of(21)) + } } application { @@ -25,7 +29,7 @@ graalvmNative { if (System.getenv("GRAALVM_HOME") == null) { toolchainDetection.set(true) javaLauncher.set(javaToolchains.launcherFor { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(21)) }) } else { toolchainDetection.set(false) diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index 24763591..9f2935ce 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -48,6 +48,9 @@ { "name":"[Lorg.whispersystems.signalservice.internal.push.GroupStaleDevices;" }, +{ + "name":"android.os.Build$VERSION" +}, { "name":"byte[]", "allDeclaredMethods":true, diff --git a/graalvm-config-dir/resource-config.json b/graalvm-config-dir/resource-config.json index 7332edb8..b79033ea 100644 --- a/graalvm-config-dir/resource-config.json +++ b/graalvm-config-dir/resource-config.json @@ -28,6 +28,8 @@ "pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.resolve.ExternalOverridabilityCondition\\E" }, { "pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.util.ModuleVisibilityHelper\\E" + }, { + "pattern":"\\QMETA-INF/services/org.freedesktop.dbus.spi.message.ISocketProvider\\E" }, { "pattern":"\\QMETA-INF/services/org.freedesktop.dbus.spi.transport.ITransportProvider\\E" }, { @@ -198,6 +200,8 @@ "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/nfc.nrm\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/uprops.icu\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfc.nrm\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E" }, { diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index dd765cba..38d4c221 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -4,8 +4,12 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + + toolchain { + languageVersion.set(JavaLanguageVersion.of(21)) + } } val libsignalClientPath = project.findProperty("libsignal_client_path")?.toString() diff --git a/run_tests.sh b/run_tests.sh index ffec8b11..6a7c8358 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -32,7 +32,7 @@ fi run() { # To update graalvm config, set GRAALVM_HOME, e.g: - # export GRAALVM_HOME=/usr/lib/jvm/java-17-graalvm + # export GRAALVM_HOME=/usr/lib/jvm/java-21-graalvm if [ ! -z "$GRAALVM_HOME" ]; then export JAVA_HOME=$GRAALVM_HOME export SIGNAL_CLI_OPTS="-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir-${SIGNAL_CLI_AGENT_ID}/" -- 2.50.1