Skip to content

Automatic compilation of native libraries for the Signal messenger

License

Notifications You must be signed in to change notification settings

R0Y4LTS/signal-libs-build

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automatic compilation of native libraries for the Signal messenger.

What it is

This repo is a CI/CD workflow that uses GitHub Actions to automatically compile Signal's rust libraries zkgroup and libsignal-client. These libraries are required by the libsignal-service-java (fork), which is in turn a dependency of signal-cli.

Using signal-cli currently requires compiling them individually for a specific operating system and a processor architecture. This repo aims to simplify the installation by providing the pre-compiled binaries for most of the popular platforms (see available platforms below).

Update: As of libsignal-client v0.10.0, the zkgroup library is now incorporated into the libsignal-client.

Update 2: As of libsignal-client v0.10.0, builds for x86_64 macOS and Windows are available in the upstream releases, along with the usual Linux builds.

Update 3: As of signal-cli v0.10.3, the macOS and Windows builds are bundled into the official releases.

How to use it

The compiled library files (.so / .dylib / .dll) can be incorporated into signal-cli according to the instructions on its wiki. For Linux, this amounts to swapping the .so files inside the .jar archives.

For example, for an ARM64 version of signal-cli v0.10.5, download signal-cli-0.10.5-Linux.tar.gz from the signal-cli repo and libsignal_jni.so-v0.15.0-aarch64-unknown-linux-gnu.tar.gz from this repo. Unpack them with tar -xzf ….tar.gz. Then execute:

zip -uj signal-cli-0.10.5/lib/libsignal-client-0.15.0.jar libsignal_jni.so

How it works

The workflow automatically checks for new releases in https://github.com/Turasa/libsignal-service-java. If one is available, it downloads and builds the required versions of the native library dependencies.

Security

All the published files are compiled automatically by GitHub's CI infrastructure, following the steps in the workflow files. This can be verified by the "github-actions released this" line on the release's page (also visible with GitHub API calls). Additionally, a SHA checksum is printed out during the workflow run for every compiled file.

All this means that you can download and run the published binaries with a confidence that they are exactly what has been produced by GitHub Actions by executing the instructions in the (open source) workflow files.

Available platforms

  • x86_64-linux-gnu Most desktop linuxes. Works with glibc v2.18 and newer, so that Ubuntu 18.04, Debain 10 and CentOS 7 are supported. (Upstream releases are built with a more recent glibc version. See signal-cli#643)
  • x86_64-apple-darwin MacOS, Intel 64 bit.
  • x86_64-pc-windows Windows, 64 bit, statically linked (does not rely on the Microsoft Visual Code libraries).
  • aarch64-apple-darwin MacOS, ARM64.
  • aarch64-linux-gnu Raspberry Pi 3,4; Pine A64; many SoC.
  • armv7-linux-gnueabihf Raspberry Pi 2; many SoC.
  • i686-linux-gnu 32 bit Linux.

Tip: on *nix, use uname -m to get your device's architecture.

Suggestions for additional platforms are welcome - feel free to open an issue!

Similar projects

Manual builds for Raspberry Pi:

About

Automatic compilation of native libraries for the Signal messenger

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 59.7%
  • Shell 40.3%