Fix Signal Desktop v8.0.0 binary ACI by building signal-cli from master#801
Open
strichter wants to merge 3 commits intobbernhard:masterfrom
Open
Fix Signal Desktop v8.0.0 binary ACI by building signal-cli from master#801strichter wants to merge 3 commits intobbernhard:masterfrom
strichter wants to merge 3 commits intobbernhard:masterfrom
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>
5 tasks
Author
Open
2 tasks
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
Owner
|
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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