Update to java 25

This commit is contained in:
AsamK 2025-12-07 20:24:36 +01:00
parent 82abc20871
commit 32c8d4f801
12 changed files with 199 additions and 270 deletions

View File

@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
java: [ '21', '25' ] java: [ '25' ]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -58,9 +58,8 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1 - uses: graalvm/setup-graalvm@v1
with: with:
distribution: 'graalvm-community' distribution: 'graalvm'
version: '21.0.2' java-version: '25'
java-version: '21'
cache: 'gradle' cache: 'gradle'
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build with Gradle - name: Build with Gradle

View File

@ -24,7 +24,7 @@ jobs:
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
distribution: 'zulu' distribution: 'zulu'
java-version: 21 java-version: 25
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4

View File

@ -2,6 +2,8 @@
## [Unreleased] ## [Unreleased]
**Attention**: Now requires Java 25
### Breaking changes ### Breaking changes
- Remove isRegistered method without parameters from Signal dbus interface, which always returned `true` - Remove isRegistered method without parameters from Signal dbus interface, which always returned `true`

View File

@ -1,4 +1,4 @@
FROM docker.io/azul/zulu-openjdk:21-jre-headless FROM docker.io/azul/zulu-openjdk:25-jre-headless
LABEL org.opencontainers.image.source=https://github.com/AsamK/signal-cli 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." LABEL org.opencontainers.image.description="signal-cli provides an unofficial commandline, dbus and JSON-RPC interface for the Signal messenger."

View File

@ -23,7 +23,7 @@ Windows. There's also a [docker image and some Linux packages](https://github.co
System requirements: System requirements:
- at least Java Runtime Environment (JRE) 21 - at least Java Runtime Environment (JRE) 25
- native library: libsignal-client - native library: libsignal-client
The native libs are bundled for x86_64 Linux (with recent enough glibc), Windows and MacOS. For other The native libs are bundled for x86_64 Linux (with recent enough glibc), Windows and MacOS. For other

View File

@ -12,8 +12,8 @@ allprojects {
} }
java { java {
sourceCompatibility = JavaVersion.VERSION_21 sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_25
if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) { if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) {
toolchain { toolchain {
@ -39,7 +39,7 @@ graalvmNative {
if (System.getenv("GRAALVM_HOME") == null) { if (System.getenv("GRAALVM_HOME") == null) {
toolchainDetection.set(true) toolchainDetection.set(true)
javaLauncher.set(javaToolchains.launcherFor { javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(21)) languageVersion.set(JavaLanguageVersion.of(25))
}) })
} else { } else {
toolchainDetection.set(false) toolchainDetection.set(false)

View File

@ -7,11 +7,11 @@ plugins {
} }
tasks.named<KotlinCompilationTask<KotlinJvmCompilerOptions>>("compileKotlin").configure { tasks.named<KotlinCompilationTask<KotlinJvmCompilerOptions>>("compileKotlin").configure {
compilerOptions.jvmTarget.set(JvmTarget.JVM_17) compilerOptions.jvmTarget.set(JvmTarget.JVM_24)
} }
java { java {
targetCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_24
} }
repositories { repositories {

View File

@ -1,26 +1 @@
[ [{"interfaces":["java.sql.Connection"]},{"interfaces":["org.asamk.Signal"]},{"interfaces":["org.asamk.Signal$Configuration"]},{"interfaces":["org.asamk.Signal$Device"]},{"interfaces":["org.asamk.Signal$Group"]},{"interfaces":["org.asamk.Signal$Identity"]},{"interfaces":["org.asamk.SignalControl"]},{"interfaces":["org.freedesktop.dbus.interfaces.DBus"]}]
{
"interfaces":["java.sql.Connection"]
},
{
"interfaces":["org.asamk.Signal"]
},
{
"interfaces":["org.asamk.Signal$Configuration"]
},
{
"interfaces":["org.asamk.Signal$Device"]
},
{
"interfaces":["org.asamk.Signal$Group"]
},
{
"interfaces":["org.asamk.Signal$Identity"]
},
{
"interfaces":["org.asamk.SignalControl"]
},
{
"interfaces":["org.freedesktop.dbus.interfaces.DBus"]
}
]

View File

@ -307,6 +307,14 @@
"name": "getCredentials", "name": "getCredentials",
"parameterTypes": [] "parameterTypes": []
}, },
{
"name": "getCredentialsProvider",
"parameterTypes": []
},
{
"name": "getCredentialsProviderClassName",
"parameterTypes": []
},
{ {
"name": "getDataSource", "name": "getDataSource",
"parameterTypes": [] "parameterTypes": []
@ -495,6 +503,18 @@
"com.zaxxer.hikari.util.Credentials" "com.zaxxer.hikari.util.Credentials"
] ]
}, },
{
"name": "setCredentialsProvider",
"parameterTypes": [
"com.zaxxer.hikari.HikariCredentialsProvider"
]
},
{
"name": "setCredentialsProviderClassName",
"parameterTypes": [
"java.lang.String"
]
},
{ {
"name": "setDataSource", "name": "setDataSource",
"parameterTypes": [ "parameterTypes": [
@ -811,7 +831,13 @@
{ {
"type": "java.lang.Enum", "type": "java.lang.Enum",
"allDeclaredMethods": true, "allDeclaredMethods": true,
"jniAccessible": true "jniAccessible": true,
"methods": [
{
"name": "ordinal",
"parameterTypes": []
}
]
}, },
{ {
"type": "java.lang.Float", "type": "java.lang.Float",
@ -931,6 +957,10 @@
{ {
"name": "getStackTrace", "name": "getStackTrace",
"parameterTypes": [] "parameterTypes": []
},
{
"name": "isVirtual",
"parameterTypes": []
} }
] ]
}, },
@ -1879,6 +1909,10 @@
"type": "org.asamk.signal.Main", "type": "org.asamk.signal.Main",
"jniAccessible": true, "jniAccessible": true,
"methods": [ "methods": [
{
"name": "<init>",
"parameterTypes": []
},
{ {
"name": "main", "name": "main",
"parameterTypes": [ "parameterTypes": [
@ -4516,6 +4550,33 @@
} }
] ]
}, },
{
"type": "org.bouncycastle.jcajce.provider.kdf.HKDF$Mappings",
"methods": [
{
"name": "<init>",
"parameterTypes": []
}
]
},
{
"type": "org.bouncycastle.jcajce.provider.kdf.PBEPBKDF2$Mappings",
"methods": [
{
"name": "<init>",
"parameterTypes": []
}
]
},
{
"type": "org.bouncycastle.jcajce.provider.kdf.SCRYPT$Mappings",
"methods": [
{
"name": "<init>",
"parameterTypes": []
}
]
},
{ {
"type": "org.bouncycastle.jcajce.provider.keystore.BC$Mappings", "type": "org.bouncycastle.jcajce.provider.keystore.BC$Mappings",
"methods": [ "methods": [
@ -4708,6 +4769,15 @@
} }
] ]
}, },
{
"type": "org.bouncycastle.jcajce.provider.symmetric.HKDF$Mappings",
"methods": [
{
"name": "<init>",
"parameterTypes": []
}
]
},
{ {
"type": "org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings", "type": "org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings",
"methods": [ "methods": [
@ -5146,6 +5216,50 @@
} }
] ]
}, },
{
"type": "org.signal.core.models.ServiceId",
"allDeclaredFields": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
"org.signal.libsignal.protocol.ServiceId"
]
},
{
"name": "equals",
"parameterTypes": [
"java.lang.Object"
]
},
{
"name": "hashCode",
"parameterTypes": []
},
{
"name": "logString",
"parameterTypes": []
},
{
"name": "toByteArray",
"parameterTypes": []
},
{
"name": "toByteString",
"parameterTypes": []
},
{
"name": "toProtocolAddress",
"parameterTypes": [
"int"
]
},
{
"name": "toString",
"parameterTypes": []
}
]
},
{ {
"type": "org.signal.libsignal.internal.CompletableFuture", "type": "org.signal.libsignal.internal.CompletableFuture",
"jniAccessible": true, "jniAccessible": true,
@ -5214,6 +5328,12 @@
"type": "org.signal.libsignal.net.ChatConnection$ListenerBridge", "type": "org.signal.libsignal.net.ChatConnection$ListenerBridge",
"jniAccessible": true, "jniAccessible": true,
"methods": [ "methods": [
{
"name": "connectionInterrupted",
"parameterTypes": [
"java.lang.Throwable"
]
},
{ {
"name": "onConnectionInterrupted", "name": "onConnectionInterrupted",
"parameterTypes": [ "parameterTypes": [
@ -5237,6 +5357,24 @@
"parameterTypes": [ "parameterTypes": [
"java.lang.String[]" "java.lang.String[]"
] ]
},
{
"name": "receivedAlerts",
"parameterTypes": [
"java.lang.String[]"
]
},
{
"name": "receivedIncomingMessage",
"parameterTypes": [
"byte[]",
"long",
"long"
]
},
{
"name": "receivedQueueEmpty",
"parameterTypes": []
} }
] ]
}, },
@ -5279,6 +5417,18 @@
} }
] ]
}, },
{
"type": "org.signal.libsignal.net.ChatServiceInactiveException",
"jniAccessible": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
"java.lang.String"
]
}
]
},
{ {
"type": "org.signal.libsignal.net.DeviceDeregisteredException", "type": "org.signal.libsignal.net.DeviceDeregisteredException",
"jniAccessible": true, "jniAccessible": true,
@ -5315,6 +5465,18 @@
} }
] ]
}, },
{
"type": "org.signal.libsignal.net.TransportFailureException",
"jniAccessible": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
"java.lang.String"
]
}
]
},
{ {
"type": "org.signal.libsignal.net.internal.BridgeChatListener", "type": "org.signal.libsignal.net.internal.BridgeChatListener",
"jniAccessible": true "jniAccessible": true
@ -6831,6 +6993,22 @@
} }
] ]
}, },
{
"type": "org.whispersystems.signalservice.api.link.SetDeviceNameRequest",
"allDeclaredFields": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
"java.lang.String"
]
},
{
"name": "getDeviceName",
"parameterTypes": []
}
]
},
{ {
"type": "org.whispersystems.signalservice.api.messages.calls.HangupMessage", "type": "org.whispersystems.signalservice.api.messages.calls.HangupMessage",
"allDeclaredFields": true, "allDeclaredFields": true,
@ -6894,7 +7072,7 @@
"allDeclaredFields": true "allDeclaredFields": true
}, },
{ {
"type": "org.signal.core.models.ServiceId", "type": "org.whispersystems.signalservice.api.push.ServiceId",
"allDeclaredFields": true, "allDeclaredFields": true,
"methods": [ "methods": [
{ {
@ -9234,4 +9412,4 @@
} }
} }
] ]
} }

File diff suppressed because one or more lines are too long

View File

@ -4,8 +4,8 @@ plugins {
} }
java { java {
sourceCompatibility = JavaVersion.VERSION_21 sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_25
if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) { if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) {
toolchain { toolchain {

View File

@ -32,7 +32,7 @@ fi
run() { run() {
# To update graalvm config, set GRAALVM_HOME, e.g: # To update graalvm config, set GRAALVM_HOME, e.g:
# export GRAALVM_HOME=/usr/lib/jvm/java-21-graalvm # export GRAALVM_HOME=/usr/lib/jvm/java-25-graalvm
if [ ! -z "$GRAALVM_HOME" ]; then if [ ! -z "$GRAALVM_HOME" ]; then
export JAVA_HOME=$GRAALVM_HOME export JAVA_HOME=$GRAALVM_HOME
export SIGNAL_CLI_OPTS="-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir-${SIGNAL_CLI_AGENT_ID}/" export SIGNAL_CLI_OPTS="-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir-${SIGNAL_CLI_AGENT_ID}/"