Skip to content

Provided native lib for libsignal 0.8.1 is not recognizied #562

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
dechemist opened this issue Mar 7, 2021 · 8 comments
Closed

Provided native lib for libsignal 0.8.1 is not recognizied #562

dechemist opened this issue Mar 7, 2021 · 8 comments

Comments

@dechemist
Copy link

Hi all,

I tried to install signal-cli on my armbian system (Odroid). The general installation and building process of signal-cli as described works fine. Building the native arm libs for libsignal and libzkgroup also works as described in the wiki (Thanks!).
After i stripped the *.jar files from their incompatible so-libraries, I checked the default lib-path from java (/usr/lib was in the list) and copied the newly build 'libsignal_jni.so' and 'libzkgroup.so' to /usr/lib.
When I try to register a new account with "./signal-cli -u XXXXXX register" I still receive the error "Missing required native library dependency: libsignal-client". To check whether die newly generated libraries where found at all, I removed the libzkgroup.so for testing from /usr/lib and got an additional error about the missing "libzkgroup.so". So java correctly checks /usr/lib for the libraries, but for some reason libsignal_jni.so is not recognized. Did the library name change?
I "hope" this is a real issue and not me doing something wrong ;) Can someone please have a look hat this?

kind regards

dechemist

@0mp
Copy link
Contributor

0mp commented Mar 7, 2021

I am experiencing the same issue on FreeBSD. Here's a rough overview of the process:

I am building libzkgroup.so and libsignal_jni.so from source and install them in a standard place for libraries (/usr/local/lib).

After extracting the signal-cli release, I run the following commands to get rid of the bundled libraries:

zip -d ${WRKSRC}/lib/zkgroup-java-*.jar libzkgroup.so
zip -d ${WRKSRC}/lib/signal-client-java-*.jar libsignal_jni.so

Then, I run signal-cli link and I get the following output:

root@122a-default:/usr/ports/net-im/signal-cli # signal-cli link
Missing required native library dependency: libsignal-client

I've tried troubleshooting the issue, but the only interesting bit I found is that libsignal_jni.so is actually opened (and hopefully read). Here's an output of dwatch -X open which lets me trace all the open calls done by signal-cli:

Output of `dwatch`
2021 Mar  7 13:37:21 0.0 sh[3417]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 sh[3417]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 sh[3417]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libedit.so.7
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libncursesw.so.8
2021 Mar  7 13:37:21 0.0 sh[3417]: /usr/local/bin/signal-cli
2021 Mar  7 13:37:21 0.0 sh[3417]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 sh[3417]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 sh[3417]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libedit.so.7
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 sh[3417]: /lib/libncursesw.so.8
2021 Mar  7 13:37:21 0.0 sh[3417]: /usr/local/share/signal-cli/bin/signal-cli
2021 Mar  7 13:37:21 0.0 dirname[3419]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 dirname[3419]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 dirname[3419]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 dirname[3419]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 sh[3417]: /dev/null
2021 Mar  7 13:37:21 0.0 sh[3417]: /dev/null
2021 Mar  7 13:37:21 0.0 basename[3537]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 basename[3537]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 basename[3537]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 basename[3537]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 uname[3592]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 uname[3592]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 uname[3592]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 uname[3592]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 sed[3813]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 sed[3813]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 sed[3813]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 sed[3813]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 java[3417]: /etc/libmap.conf
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/etc/libmap.d
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/bin/../lib/jli/libz.so.6
2021 Mar  7 13:37:21 0.0 java[3417]: /var/run/ld-elf.so.hints
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libz.so.6
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/bin/../lib/jli/libthr.so.3
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libthr.so.3
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/bin/../lib/jli/libc.so.7
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libc.so.7
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/jvm.cfg
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/server/libjvm.so
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libm.so.5
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libc++.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/lib/libc++.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libcxxrt.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libgcc_s.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libverify.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libjava.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/share/zoneinfo/UTC
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/share/zoneinfo/posixrules
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libjimage.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libdl.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /lib/libdl.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/lib/libdl.so.1
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/modules
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/endorsed
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/ext
2021 Mar  7 13:37:21 0.0 java[3417]: /etc/nsswitch.conf
2021 Mar  7 13:37:21 0.0 java[3417]: /etc/spwd.db
2021 Mar  7 13:37:21 0.0 java[3417]: /tmp/hsperfdata_root
2021 Mar  7 13:37:21 0.0 java[3417]: /tmp/hsperfdata_root
2021 Mar  7 13:37:21 0.0 java[3417]: .
2021 Mar  7 13:37:21 0.0 java[3417]: /tmp/hsperfdata_root
2021 Mar  7 13:37:21 0.0 java[3417]: /tmp/hsperfdata_root
2021 Mar  7 13:37:21 0.0 java[3417]: .
2021 Mar  7 13:37:21 0.0 java[3417]: 3417
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libzip.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/modules
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/server/classes.jsa
2021 Mar  7 13:37:21 0.0 java[3417]: /etc/spwd.db
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libnio.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libnet.so
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/share/signal-cli/lib/signal-cli-0.8.1.jar
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/share/signal-cli/lib/lib.jar
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/share/signal-cli/lib/bcprov-jdk15on-1.68.jar
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/share/signal-cli/lib/argparse4j-0.8.1.jar
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/conf/security/java.security
2021 Mar  7 13:37:21 0.0 java[3417]: /dev/random
2021 Mar  7 13:37:21 0.0 java[3417]: /usr/local/openjdk11/lib/libsunec.so
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/dbus-java-3.2.4.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/slf4j-simple-1.7.30.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/java-utils-1.0.6.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-unixsocket-0.33.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/slf4j-api-1.7.30.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/signal-service-java-2.15.3_unofficial_19.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/protobuf-javalite-3.10.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-enxio-0.28.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-posix-3.0.58.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-ffi-2.1.15.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-constants-0.9.15.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/libphonenumber-8.12.17.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jackson-databind-2.9.9.2.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/signal-client-java-0.2.3.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/okhttp-4.6.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/zkgroup-java-0.7.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/threetenbp-1.3.6.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jffi-1.2.23.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jffi-1.2.23-native.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/asm-commons-7.1.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/asm-util-7.1.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/asm-analysis-7.1.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/asm-tree-7.1.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/asm-7.1.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-a64asm-1.0.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jnr-x86asm-1.0.2.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jackson-annotations-2.9.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/jackson-core-2.9.9.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/okio-jvm-2.6.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/kotlin-stdlib-1.3.71.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/kotlin-stdlib-common-1.3.71.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/share/signal-cli/lib/annotations-13.0.jar
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/lib/libzkgroup.so
2021 Mar  7 13:37:22 0.0 java[3417]: /usr/local/lib/libsignal_jni.so
2021 Mar  7 13:37:22 0.0 java[3417]: /lib/libgcc_s.so.1

As you can see, /usr/local/lib/libsignal_jni.so is opened.

Let me know if you have any idea how to troubleshoot this issue.

@AsamK
Copy link
Owner

AsamK commented Mar 7, 2021

Make sure you compiled the correct version of libsignal-client (currently tag java-0.2.3).
Also double check that the .so file is compiled for your system's architecture and libc (e.g. with ldd and file)

@0mp
Copy link
Contributor

0mp commented Mar 7, 2021

Make sure you compiled the correct version of libsignal-client (currently tag java-0.2.3).
Also double check that the .so file is compiled for your system's architecture and libc (e.g. with ldd and file)

I'll try that tag. What bothers me is that the java-0.2.3 tag is older than java-0.1.7.

@0mp
Copy link
Contributor

0mp commented Mar 7, 2021

The library compiled from the sources tagged with java-0.2.3 works just fine with 0.8.1. Thanks a lot, I'll be committing the update to the FreeBSD Ports Collection soon.

Edit: I've updated the port, here are relevant links:

@dechemist
Copy link
Author

Thanks for the quick reply.
Can someone please explain the following, I am not used to compile libs and familiar with the proceses. For my build I cloned the git repository, how do I select the "java-0.2.3" tag there?

Make sure you compiled the correct version of libsignal-client (currently tag java-0.2.3).
Also double check that the .so file is compiled for your system's architecture and libc (e.g. with ldd and file)

@0mp
Copy link
Contributor

0mp commented Mar 7, 2021

Thanks for the quick reply.
Can someone please explain the following, I am not used to compile libs and familiar with the proceses. For my build I cloned the git repository, how do I select the "java-0.2.3" tag there?

Perhaps this points you into the right direction: https://stackoverflow.com/questions/4330610/switch-to-another-git-tag

@dechemist
Copy link
Author

dechemist commented Mar 7, 2021

Thanks, works for me !
For the sake of completeness:
git clone https://github.com/signalapp/libsignal-client.git
git checkout java-0.2.3
Then continue with the build instructions given here: https://github.com/AsamK/signal-cli/wiki/Provide-native-lib-for-libsignal

@AsamK
Copy link
Owner

AsamK commented Mar 7, 2021

The Signal-Android app has switched back to the 0.1.x branch (not exactly sure why) and made some additional changes there, that's why 0.1.7 is newer.
However signal-cli needs a method that only exists in the 0.2.x branch. Also development for the other signal platforms continues on the 0.2 master branch. I guess eventually Signal-Android app will switch to a 0.2.x version again ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants