net-im/signal-cli: Include patches bringing B-Bus support

This commit updates dbus-java and its dependencies to 3.2.2, which includes
patches contributed by grembo@, which make signal-cli work nicely with
D-Bus on FreeBSD.  It is a great thing because now it is possible to use
various TUI clients for Signal.

Additionally, we include an rc(8) service now, which allows users to run
signal-cli as a system service if they desire to use D-Bus system bus to
talk to signal-cli.

Other changes:
- Make _get-links depend on patch instead of extract (sometimes we need to
  patch Gradle config files to get the versions we really want).
- Introduce ORIGINAL_BUILD_GRADLE variable for robustness.
- Put some documentation into pkg-message to help users start using
  signal-cli.
- Set JAVA_HOME in the signal-cli script; it is a bug fix.

Special thanks to:	grembo@
This commit is contained in:
Mateusz Piotrowski 2020-08-11 11:11:27 +00:00
parent e1244c9e46
commit 1d21db50cb
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=544680
7 changed files with 194 additions and 40 deletions

View file

@ -3,19 +3,20 @@
PORTNAME= signal-cli
DISTVERSIONPREFIX= v
DISTVERSION= 0.6.8
PORTREVISION= 1
CATEGORIES= net-im java
MASTER_SITES= https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/:_jackson_annotations \
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.9.9/:_jackson_core \
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.9.2/:_jackson_databind \
https://repo.maven.apache.org/maven2/com/github/hypfvieh/dbus-java/3.2.1/:_dbus_java \
https://repo.maven.apache.org/maven2/com/github/hypfvieh/dbus-java/3.2.2/:_dbus_java \
https://repo.maven.apache.org/maven2/com/github/hypfvieh/java-utils/1.0.6/:_java_utils \
https://repo.maven.apache.org/maven2/com/github/jnr/jffi/1.2.19/:_jffi \
https://repo.maven.apache.org/maven2/com/github/jnr/jffi/1.2.23/:_jffi \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-a64asm/1.0.0/:_jnr_a64asm \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-constants/0.9.12/:_jnr_constants \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-enxio/0.21/:_jnr_enxio \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-ffi/2.1.10/:_jnr_ffi \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-posix/3.0.50/:_jnr_posix \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-unixsocket/0.23/:_jnr_unixsocket \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-constants/0.9.15/:_jnr_constants \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-enxio/0.28/:_jnr_enxio \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-ffi/2.1.15/:_jnr_ffi \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-posix/3.0.58/:_jnr_posix \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-unixsocket/0.33/:_jnr_unixsocket \
https://repo.maven.apache.org/maven2/com/github/jnr/jnr-x86asm/1.0.2/:_jnr_x86asm \
https://repo.maven.apache.org/maven2/com/github/turasa/signal-service-java/2.15.3_unofficial_10/:_signal_service_java \
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.10.0/:_protobuf_javalite \
@ -48,18 +49,18 @@ DISTFILES= annotations-13.0.jar:_annotations \
asm-util-7.1.jar:_asm_util \
bcprov-jdk15on-1.65.jar:_bcprov_jdk15on \
curve25519-java-0.5.0.jar:_curve25519_java \
dbus-java-3.2.1.jar:_dbus_java \
dbus-java-3.2.2.jar:_dbus_java \
jackson-annotations-2.9.0.jar:_jackson_annotations \
jackson-core-2.9.9.jar:_jackson_core \
jackson-databind-2.9.9.2.jar:_jackson_databind \
java-utils-1.0.6.jar:_java_utils \
jffi-1.2.19.jar:_jffi \
jffi-1.2.23.jar:_jffi \
jnr-a64asm-1.0.0.jar:_jnr_a64asm \
jnr-constants-0.9.12.jar:_jnr_constants \
jnr-enxio-0.21.jar:_jnr_enxio \
jnr-ffi-2.1.10.jar:_jnr_ffi \
jnr-posix-3.0.50.jar:_jnr_posix \
jnr-unixsocket-0.23.jar:_jnr_unixsocket \
jnr-constants-0.9.15.jar:_jnr_constants \
jnr-enxio-0.28.jar:_jnr_enxio \
jnr-ffi-2.1.15.jar:_jnr_ffi \
jnr-posix-3.0.58.jar:_jnr_posix \
jnr-unixsocket-0.33.jar:_jnr_unixsocket \
jnr-x86asm-1.0.2.jar:_jnr_x86asm \
kotlin-stdlib-1.3.71.jar:_kotlin_stdlib \
kotlin-stdlib-common-1.3.71.jar:_kotlin_stdlib_common \
@ -74,6 +75,10 @@ DISTFILES= annotations-13.0.jar:_annotations \
slf4j-nop-1.7.30.jar:_slf4j_nop \
threetenbp-1.3.6.jar:_threetenbp \
zkgroup-java-0.7.0.jar:_zkgroup_java
# jffi-native is not being listed as an explicit dependency by Gradle. As a
# workaround appended it to DISTFILES separately here as to not remove it by
# accident when upgrading the port in the future.
DISTFILES+= jffi-1.2.23-native.jar:_jffi
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= 0mp@FreeBSD.org
@ -90,10 +95,12 @@ USE_GITHUB= yes
GH_ACCOUNT= AsamK
USE_JAVA= yes
JAVA_VERSION= 8+
USE_RC_SUBR= signal_cli
NO_ARCH= yes
SUB_FILES= ${PORTNAME}
SUB_FILES= ${PORTNAME} pkg-message
SUB_LIST= JAVA_HOME="${JAVA_HOME}"
USERS= signal-cli
GROUPS= signal-cli
@ -108,17 +115,23 @@ DBUS_RUN_DEPENDS= dbus>0:devel/dbus
_GRADLE_CMD= ${LOCALBASE}/bin/gradle
_GRADLE_ARGS= --no-daemon --offline --quiet
_GRADLE_DEPS_DIR= ${WRKDIR}/gradle-deps
_ORIGINAL_BUILD_GRADLE= ${WRKSRC}/original-build.gradle
post-extract:
@${MKDIR} ${_GRADLE_DEPS_DIR}
.for distfile in ${DISTFILES:N${DISTNAME}:C/:_[0-9A-Za-z_]*$//}
@${CP} ${DISTDIR}/${distfile} ${_GRADLE_DEPS_DIR}/
.endfor
@${MV} ${WRKSRC}/build.gradle ${WRKSRC}/original-build.gradle
@${MV} ${WRKSRC}/build.gradle ${_ORIGINAL_BUILD_GRADLE}
@${SED} -e 's|%%GRADLE_DEPS_DIR%%|${_GRADLE_DEPS_DIR}|g' \
-e 's|%%ORIGINAL_BUILD_GRADLE%%|${_ORIGINAL_BUILD_GRADLE}|g' \
${FILESDIR}/build.gradle.in \
> ${WRKSRC}/build.gradle
post-patch:
# This line may be removed once upstream switches to dbus-java >=3.2.2.
${REINPLACE_CMD} 's/dbus-java:3.2.1/dbus-java:3.2.2/' ${_ORIGINAL_BUILD_GRADLE}
do-build:
(cd ${WRKSRC} && \
${SETENV} GRADLE_USER_HOME=${WRKDIR} \
@ -147,7 +160,7 @@ post-install-DBUS-on:
# This target can be used by the maintainer to regenerate MASTER_SITES and
# DISTFILES from project's build.gradle.
_get-links: extract
_get-links: patch
@(cd ${WRKSRC} && \
${_GRADLE_CMD} \
--build-file ${WRKSRC}/build.gradle \

View file

@ -1,4 +1,4 @@
TIMESTAMP = 1596709680
TIMESTAMP = 1597136208
SHA256 (annotations-13.0.jar) = ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478
SIZE (annotations-13.0.jar) = 17536
SHA256 (argparse4j-0.8.1.jar) = 98cb5468cac609f3bc07856f2e34088f50dc114181237c48d20ca69c3265d044
@ -17,8 +17,8 @@ SHA256 (bcprov-jdk15on-1.65.jar) = e78f96eb59066c94c94fb2d6b5eb80f52feac6f5f9776
SIZE (bcprov-jdk15on-1.65.jar) = 4460240
SHA256 (curve25519-java-0.5.0.jar) = 0aadd43cf01d11e9b58f867b3c4f25c3194e8b0623d1953d32dfbfbee009e38d
SIZE (curve25519-java-0.5.0.jar) = 124921
SHA256 (dbus-java-3.2.1.jar) = ab65057cb8e169603c263e2eb79077e7e7ae040a5e1d7805a88af592535e7140
SIZE (dbus-java-3.2.1.jar) = 278564
SHA256 (dbus-java-3.2.2.jar) = af3175d9028615311f36d2795ba52e396f3c3fb9e7af3778100fd3b5ccd0a18d
SIZE (dbus-java-3.2.2.jar) = 285255
SHA256 (jackson-annotations-2.9.0.jar) = 45d32ac61ef8a744b464c54c2b3414be571016dd46bfc2bec226761cf7ae457a
SIZE (jackson-annotations-2.9.0.jar) = 66519
SHA256 (jackson-core-2.9.9.jar) = 3083079be6088db2ed0a0c6ff92204e0aa48fa1de9db5b59c468f35acf882c2c
@ -27,20 +27,20 @@ SHA256 (jackson-databind-2.9.9.2.jar) = fb262d42ea2de98044b62d393950a5aa050435fe
SIZE (jackson-databind-2.9.9.2.jar) = 1348331
SHA256 (java-utils-1.0.6.jar) = c57f755a8042528f5c77cded3968493e0e7738e722c5a99508530e3598464ad8
SIZE (java-utils-1.0.6.jar) = 65417
SHA256 (jffi-1.2.19.jar) = e4345e3de83736ea67b40bb69645d6f936daaa7984618b003524c11e30f82cf3
SIZE (jffi-1.2.19.jar) = 151305
SHA256 (jffi-1.2.23.jar) = 0b9c8ec750e680c28c385b3a3dfa8755e904a4ae82be0b95c109c54e5a1ca5d0
SIZE (jffi-1.2.23.jar) = 152016
SHA256 (jnr-a64asm-1.0.0.jar) = 53ae5ea7fa5c284e8279aa348e7b9de4548b0cae10bfd058fa217c791875e4cf
SIZE (jnr-a64asm-1.0.0.jar) = 86270
SHA256 (jnr-constants-0.9.12.jar) = f4be9e6bd4e2a24f0b37ee950ff8b252fa15b786987993374fb15c89f53c7654
SIZE (jnr-constants-0.9.12.jar) = 550091
SHA256 (jnr-enxio-0.21.jar) = 63bd6238b5975b3aa62468f73bda58fb940611fa313066ab7e8a8c430aa347d7
SIZE (jnr-enxio-0.21.jar) = 29868
SHA256 (jnr-ffi-2.1.10.jar) = 51dc294f52037268bbe73f8bc6932243fb32e1a414337448aba7d1635669036f
SIZE (jnr-ffi-2.1.10.jar) = 697106
SHA256 (jnr-posix-3.0.50.jar) = e0cb6c47ce209b9aa0f8c52b7aa3116c41b3c7f282fec54f170f9ec51f7c30f9
SIZE (jnr-posix-3.0.50.jar) = 254279
SHA256 (jnr-unixsocket-0.23.jar) = 4291f7c46a2ec8264cedd8daf4535a59b58868addff6c8cca064b48bbce9db00
SIZE (jnr-unixsocket-0.23.jar) = 47483
SHA256 (jnr-constants-0.9.15.jar) = 72a1888282285dbd46e32e90b2c19f503c183bc8eccb0087d7c480b9b2b95baf
SIZE (jnr-constants-0.9.15.jar) = 657207
SHA256 (jnr-enxio-0.28.jar) = ed25e20337c76ebbc8bfa8d8a922ee92f2a70261f6bf2229fad150a447fe8621
SIZE (jnr-enxio-0.28.jar) = 32156
SHA256 (jnr-ffi-2.1.15.jar) = 7585ebf1469068caf75b35c2caeb86063e223a6bf3f10250b8fe6a61897aa086
SIZE (jnr-ffi-2.1.15.jar) = 698486
SHA256 (jnr-posix-3.0.58.jar) = 0eb199ffe4930761addc5120f76223671dbab775a31afd491d68bbd2cbdbefe6
SIZE (jnr-posix-3.0.58.jar) = 265978
SHA256 (jnr-unixsocket-0.33.jar) = b108f98a8971a3814349f752666a9e30f2f769e08e157cd01a6ab15dec4a036f
SIZE (jnr-unixsocket-0.33.jar) = 48045
SHA256 (jnr-x86asm-1.0.2.jar) = 39f3675b910e6e9b93825f8284bec9f4ad3044cd20a6f7c8ff9e2f8695ebf21e
SIZE (jnr-x86asm-1.0.2.jar) = 219943
SHA256 (kotlin-stdlib-1.3.71.jar) = 5ace22b102a96425e4ac44e0558b927f3857b56a33cbc289cf1b70aee645e6a7
@ -69,5 +69,7 @@ SHA256 (threetenbp-1.3.6.jar) = f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec
SIZE (threetenbp-1.3.6.jar) = 514875
SHA256 (zkgroup-java-0.7.0.jar) = d0099eedd60d6f7d4df5b288175e5d585228ed8897789926bdab69bf8c05659f
SIZE (zkgroup-java-0.7.0.jar) = 316995
SHA256 (jffi-1.2.23-native.jar) = 38cd5c33c4310d173b9345348e3a09528051b8e67f00e8477140c45062034a25
SIZE (jffi-1.2.23-native.jar) = 795222
SHA256 (AsamK-signal-cli-v0.6.8_GH0.tar.gz) = 43463155418d47f11fcffc3b9231ab3f6296aee35b8c1ae0d7744822a124de37
SIZE (AsamK-signal-cli-v0.6.8_GH0.tar.gz) = 134436

View file

@ -2,7 +2,7 @@
* $FreeBSD$
*/
apply from: 'original-build.gradle'
apply from: '%%ORIGINAL_BUILD_GRADLE%%'
repositories {
flatDir {

View file

@ -0,0 +1,53 @@
[
{ type: install
message: <<EOM
Quick start
===========
1. Generate a QR code to link this signal-cli to the other user device like a
phone or tablet with a Signal app (this step requires qrencode(1), which is
an additional utility provided by the graphics/libqrencode port):
signal-cli link -n DEVICENAME | xargs -n 1 qrencode -t ANSI256
2. Scan the generated QR code with an app.
3. Send a test message to yourself:
signal-cli -u NUMBER send -m "This is a test" NUMBER
See the signal-cli wiki for more details:
https://github.com/AsamK/signal-cli/wiki
Running a signal-cli daemon (using D-Bus user bus)
==================================================
The DBUS_SESSION_BUS_ADDRESS environment variable should be present for
signal-cli to function properly when run as a daemon (`signal-cli daemon`).
The easiest way is to run the graphical session with dbus-run-session(1), e.g.:
dbus-run-session -- startx
signal_cli service (using D-Bus system bus)
===========================================
There is an rc(8) script available for signal-cli if it's desired to use
signal-cli in a daemon mode with the D-Bus system bus.
First, configure the service in rc.conf(5):
sysrc signal_cli_enable="YES"
sysrc signal_cli_phone_number="+48123456789"
Before starting the service, it is needed to either register a new Signal
account or to link this machine with an existing account. It is possible to
create a linking URL this way:
service signal_cli runcli link -n DEVICENAME
See the signal-cli wiki for more details:
https://github.com/AsamK/signal-cli/wiki
EOM
}
]

View file

@ -1,4 +1,6 @@
#! /bin/sh -
# $FreeBSD$
export JAVA_HOME="%%JAVA_HOME%%"
exec %%DATADIR%%/bin/signal-cli "$@"

View file

@ -0,0 +1,83 @@
#! /bin/sh -
#
# $FreeBSD$
#
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Mateusz Piotrowski <0mp@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# PROVIDE: signal_cli
# REQUIRE: DAEMON LOGIN NETWORKING dbus
. /etc/rc.subr
name='signal_cli'
rcvar='signal_cli_enable'
# User-facing settings and their default values.
: "${signal_cli_enable:=NO}"
: "${signal_cli_phone_number}" # No default value. Kept here for consistency.
: "${signal_cli_config_dir:="/var/lib/signal-cli"}"
pidfile="/var/run/signal_cli.pid"
procname="%%JAVA_HOME%%/bin/java"
_daemon_args="-p ${pidfile} -u signal-cli"
_signal_cli="%%PREFIX%%/bin/signal-cli --config ${signal_cli_config_dir}"
_signal_cli_args="-u ${signal_cli_phone_number}"
_signal_cli_cmd="daemon"
_signal_cli_cmd_opts="--system"
command="/usr/sbin/daemon"
command_args="${_daemon_args} ${_signal_cli} ${_signal_cli_args} ${_signal_cli_cmd} ${_signal_cli_cmd_opts}"
extra_commands="runcli"
start_precmd="signal_cli_prestart"
runcli_precmd="signal_cli_preruncli"
runcli_cmd="signal_cli_runcli"
signal_cli_create_config_dir() {
if ! install -d -o signal-cli -g signal-cli -m 700 "${signal_cli_config_dir}"; then
err 1 "Failed to create a config directory at \"${signal_cli_create_config_dir}\""
fi
}
signal_cli_prestart() {
if [ -z "${signal_cli_phone_number}" ]; then
err 1 "Phone number not provided; please set signal_cli_phone_number"
fi
signal_cli_create_config_dir
}
signal_cli_preconfigure() {
signal_cli_create_config_dir
}
# The "runcli" command can be used to run any signal-cli command (for example
# "link -n DEVICENAME") from the environment of the service.
signal_cli_runcli() {
chroot -u signal-cli / ${_signal_cli} "$@"
}
load_rc_config "$name"
run_rc_command "$@"

View file

@ -10,18 +10,19 @@ share/man/man1/signal-cli.1.gz
%%DATADIR%%/lib/asm-util-7.1.jar
%%DATADIR%%/lib/bcprov-jdk15on-1.65.jar
%%DATADIR%%/lib/curve25519-java-0.5.0.jar
%%DATADIR%%/lib/dbus-java-3.2.1.jar
%%DATADIR%%/lib/dbus-java-3.2.2.jar
%%DATADIR%%/lib/jackson-annotations-2.9.0.jar
%%DATADIR%%/lib/jackson-core-2.9.9.jar
%%DATADIR%%/lib/jackson-databind-2.9.9.2.jar
%%DATADIR%%/lib/java-utils-1.0.6.jar
%%DATADIR%%/lib/jffi-1.2.19.jar
%%DATADIR%%/lib/jffi-1.2.23.jar
%%DATADIR%%/lib/jffi-1.2.23-native.jar
%%DATADIR%%/lib/jnr-a64asm-1.0.0.jar
%%DATADIR%%/lib/jnr-constants-0.9.12.jar
%%DATADIR%%/lib/jnr-enxio-0.21.jar
%%DATADIR%%/lib/jnr-ffi-2.1.10.jar
%%DATADIR%%/lib/jnr-posix-3.0.50.jar
%%DATADIR%%/lib/jnr-unixsocket-0.23.jar
%%DATADIR%%/lib/jnr-constants-0.9.15.jar
%%DATADIR%%/lib/jnr-enxio-0.28.jar
%%DATADIR%%/lib/jnr-ffi-2.1.15.jar
%%DATADIR%%/lib/jnr-posix-3.0.58.jar
%%DATADIR%%/lib/jnr-unixsocket-0.33.jar
%%DATADIR%%/lib/jnr-x86asm-1.0.2.jar
%%DATADIR%%/lib/kotlin-stdlib-1.3.71.jar
%%DATADIR%%/lib/kotlin-stdlib-common-1.3.71.jar