add: signal-cli (#8166) (#8168)

This commit is contained in:
Raboneko
2025-12-07 19:33:23 -08:00
committed by GitHub
parent d9fffcf44d
commit e30d33b1d1
3 changed files with 126 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "signal-cli.spec"
}
}
+119
View File
@@ -0,0 +1,119 @@
%global appid org.asamk.SignalCli
%define debug_package %{nil}
Name: signal-cli
Version: 0.13.22
Release: 1%?dist
Summary: signal-cli provides an unofficial commandline, JSON-RPC and dbus interface for the Signal messenger
License: GPL-3.0-only
URL: https://github.com/AsamK/signal-cli
Source0: %url/releases/download/v%version/%name-%version.tar.gz
BuildArch: noarch
BuildRequires: gcc-c++
BuildRequires: gradle
BuildRequires: anda-srpm-macros
BuildRequires: java-21-openjdk
BuildRequires: java-21-openjdk-devel
BuildRequires: systemd-rpm-macros
BuildRequires: make
BuildRequires: asciidoc
Recommends: java-21-openjdk
%description
signal-cli is a commandline interface for the Signal messenger.
It supports registering, verifying, sending and receiving messages.
signal-cli uses a patched libsignal-service-java, extracted from the Signal-Android source code.
For registering you need a phone number where you can receive SMS or incoming calls.
signal-cli is primarily intended to be used on servers to notify admins of important events.
For this use-case, it has a daemon mode with JSON-RPC interface (man page) and D-BUS interface (man page).
For the JSON-RPC interface there's also a simple example client, written in Rust.
signal-cli needs to be kept up-to-date to keep up with Signal-Server changes.
The official Signal clients expire after three months and then the Signal-Server can make incompatible changes.
So signal-cli releases older than three months may not work correctly.
%prep
# The release tarballs don't include buildable source code
%git_clone %{url} v%{version}
%build
./gradlew build \
--no-daemon
./gradlew installDist
pushd man
%{make_build}
popd
%install
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_iconsdir}/hicolor/scalable/apps
mkdir -p %{buildroot}%{_javadir}/%{name}/lib
install -Dm755 build/install/signal-cli/bin/signal-cli %{buildroot}%{_bindir}/%{name}
install -Dm644 data/signal-cli.sysusers.conf %{buildroot}%{_libdir}/sysusers.d/signal-cli.sysusers.conf
install -Dm644 data/signal-cli.tmpfiles.conf %{buildroot}%{_libdir}/tmpfiles.d/signal-cli.tmpfiles.conf
install -Dm644 data/org.asamk.Signal.conf %{buildroot}%{_sysconfdir}/dbus-1/system.d/org.asamk.Signal.conf
install -Dm644 data/*.service %{buildroot}%{_unitdir}/
install -Dm644 data/*.socket %{buildroot}%{_unitdir}/
install -Dm644 data/org.asamk.SignalCli.metainfo.xml %{buildroot}%{_metainfodir}/org.asamk.SignalCli.metainfo.xml
install -Dm644 data/org.asamk.SignalCli.svg %{buildroot}%{_iconsdir}/hicolor/scalable/apps/
install -Dm644 man/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1
install -Dm644 man/%{name}-dbus.5 %{buildroot}%{_mandir}/man5/%{name}-dbus.5
install -Dm644 man/%{name}-jsonrpc.5 %{buildroot}%{_mandir}/man5/%{name}-jsonrpc.5
rm -f lib/commons-logging-*.jar
rm -f lib/libsignal-client*.jar
install -Dm644 build/install/signal-cli/lib/*.jar %{buildroot}%{_javadir}/%{name}/lib/
# Fix launcher to use the package-installed jars
sed -i \
's|^APP_HOME=.*$|APP_HOME=%{_javadir}/%{name}|' \
%{buildroot}%{_bindir}/signal-cli
%terra_appstream
%post
%systemd_post org.asamk.Signal.service
%systemd_post signal-cli.service
%systemd_post signal-cli@.service
%systemd_post signal-cli-socket.service
%preun
%systemd_preun org.asamk.Signal.service
%systemd_preun signal-cli.service
%systemd_preun signal-cli@.service
%systemd_preun signal-cli-socket.service
%postun
%systemd_postun_with_restart org.asamk.Signal.service
%systemd_postun_with_restart signal-cli.service
%systemd_postun_with_restart signal-cli@.service
%systemd_postun_with_restart signal-cli-socket.service
%files
%doc README.md CONTRIBUTING.md CHANGELOG.md
%license LICENSE
%{_bindir}/%{name}
%{_libdir}/sysusers.d/signal-cli.sysusers.conf
%{_libdir}/tmpfiles.d/signal-cli.tmpfiles.conf
%{_sysconfdir}/dbus-1/system.d/org.asamk.Signal.conf
%{_unitdir}/org.asamk.Signal.service
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}@.service
%{_unitdir}/%{name}-socket.service
%{_unitdir}/%{name}-socket.socket
%{_mandir}/man1/%{name}.1.*
%{_mandir}/man5/%{name}-dbus.5.*
%{_mandir}/man5/%{name}-jsonrpc.5.*
%{_metainfodir}/%{appid}.metainfo.xml
%{_iconsdir}/hicolor/scalable/apps/%{appid}.svg
%{_javadir}/%{name}/lib/*.jar
%changelog
* Sun Dec 07 2025 Owen Zimmerman <owen@fyralabs.com>
- Initial commit
+1
View File
@@ -0,0 +1 @@
rpm.version(gh("AsamK/signal-cli"));