Fix Signal Desktop v8.0.0 binary ACI by building signal-cli from master#801
Fix Signal Desktop v8.0.0 binary ACI by building signal-cli from master#801strichter wants to merge 3 commits into
Conversation
… ACI Signal Desktop v8.0.0 switched to binary ACI encoding which breaks reactions, mentions, and quotes in signal-cli v0.13.24. The signal-cli master branch already includes the fix (signal-service-java unofficial_138 with dual-format ACI parsing), so building from master on x86_64 resolves all three issues without needing a patch. Changes: - Build from signal-cli master instead of v0.13.24 tag on x86_64 - Use installDist output as the main signal-cli installation - Detect libsignal-client jar version dynamically (master uses 0.87.1) - Update signal-cli-native.patch for master's build.gradle.kts - Move BaseConfig/libsignal workarounds behind arch guard (arm64/armv7 only) Supersedes bbernhard#799 (patch-based approach). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
signal-cli master's buildSrc requires Java 24, and the libsignal-cli subproject requires Java 25 for compilation. GraalVM 21.0.0 (Java 21) fails both checks. Bump to GraalVM Community Edition 25.0.2 (JDK 25). The native binary produced by GraalVM does not require a JRE at runtime, so openjdk-21-jre in the runtime image remains sufficient. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9fa2b8b to
dd97a24
Compare
|
Thanks for the PR, but I do not want to include any patches for signal-cli and/or build signal-cli directly from the master branch. Building from master could be quite dangerous, since it might contain some partial commits. |
signal-cli master (0.14.0-SNAPSHOT) is compiled with GraalVM 25 / Java 25. The JVM launcher (`signal-cli`) requires a Java 25 runtime, but the previous image used Ubuntu Jammy with openjdk-21-jre. - Base image: ubuntu:jammy → ubuntu:noble (24.04 LTS) - JRE: openjdk-21-jre → openjdk-25-jre - netcat → netcat-openbsd (no transitional package on Noble) - Remove default `ubuntu` user (UID/GID 1000 conflict on Noble)
6dd8258 to
32c793b
Compare
|
Since our bot depends on the websocket events from this repos API, the missing mentions field is currently causing failures on our end. @bbernhard do you have a rough idea when this repository might be updated to include the fixed signal-cli version (or otherwise get this change merged)? A timeline, even very approximate would help us plan. |
Which architecture are you using? The code in the repository should already build for x86-64 (and probably for armv7 too). So, if it's one of those architectures, you should be good to go :) |
Summary
Signal Desktop v8.0.0 switched from string ACI fields to binary ACI encoding in protobuf messages, breaking reactions, mentions, and quotes in signal-cli v0.13.24. The signal-cli maintainer confirmed that the master branch already includes the fix (
signal-service-java:2.15.3_unofficial_138with dual-format ACI parsing).This PR builds signal-cli from master on x86_64 instead of checking out the v0.13.24 tag, which resolves all three issues without needing a patch file:
targetAuthorUuidpopulatedmentionsarray with resolved UUIDsquote.authorUuidpopulatedChanges
v0.13.24tag on x86_64installDistoutput as the main signal-cli installation (replaces the release tarball on x86_64)libsignal-clientjar version dynamically (master uses 0.87.1 vs 0.87.0 in v0.13.24)signal-cli-native.patchto match master'sbuild.gradle.ktsstructureHow it works
./gradlew installDist, replaces the release tarball directory, injects the customlibsignal_jni.so, then compiles the GraalVM native image.Supersedes #799 (which patched v0.13.24 with the same fixes that are now on master).
Test plan
docker build .)🤖 Generated with Claude Code