-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Support Linux with armv7hf/arm64 processors #3410
Comments
I have an identical issue. Anybody know if support is coming? @mikefedyk I'm going to try to build it from source on my chromebook, I'll post my results (if I don't forget.) |
I ended up cross-compiling it because my chromebook was too slow :P It works great, though. Here are the steps I followed:
To install it, I used sshfs to remote mount the server I built it on, then copied the file from the server's dist directory to the Linux share on the chromebook (file came to be about 80mb)
Hope it helps! |
Thanks for the info on how to build for a Chromebook. I am getting an error.
Any insight? PS: You were joking about taking a while to build, yikes. |
Thanks for the great tutorial. Was able to cross compile to arm64 & install on my Chromebook in the Crostini VM. Ran into an issue though, even though the package & its contents were compiled to arm64. When running "signal-desktop", I'm guessing it drops a temporary Chromium binary in /tmp as /tmp/.org.chromium.Chromium.xxxxx. The xxxx represents random string, each time it runs, it generates a new string. The issue is that "signal-desktop" itself doesn't run as it turns out the Chromium it drops in /tmp is still compiled as x64 and not arm64 which I find odd as the whole package should have been cross compiled into arm64 code yet the Chromium code for some reason is x64 code when dropped into the /tmp folder. Has anyone run into this issue? It feels like I'm so close yet so far with this. I also tried to natively compile signal-desktop on my ARM based Chromebook with no avail, the dependencies fail to compile, especially the journeyapps/sqlcipher module where it consistently fails, works fine on my desktop which runs an AMD64 processor. Any help would be much appreciated. Thanks! |
@rj45jack I didn't run into that issue at the time I built it, but I'll need to build it again soon here so I'm not completely out of date. @deltatux that's interesting. I don't remember having to do anything weird to get an arm64 chromium but a lot has changed for such a short amount of time to go by. I'll hopefully look into it again soon and amend my tut. |
@taigrr in attempting to cross-build last night, it seems like the project.json has been changed since when you wrote this up and the flags you included are no longer working. Haven't yet figured out how to tweak it to build cross-platform, will update if I figure out the change! |
I was able to build an installable armv7l architecture .deb file today using the instructions given above (some minor tweaks) but I also get the same problem as @deltatux I will repeat my build, take notes and provide updated instructions on the build though (when I get some time for another go at this), and then we just need to fix the arch for the chromium dependencies and I can then run Signal desktop on my Pinebook Pro! :) |
Mind sharing your tweaks? I can't even get that far, the build command for cross-compiling quoted above,
and hilariously I'm actually also trying to compile for my Pinebook Pro (although after figuring that out I'd like to compile it for other ARM devices too; Open Whisper System's hostility to 3rd-party apps makes using Signal on non-Android portables tricky!), so I'm all ears for any way to make this work . . . P.S. Compiling on the device would be fine too, if that could be made to work; I haven't had any luck with that myself though. |
I sadly lost my transcript for a working build (other than the wrong-arch chromium binaries). However if I got it working once I could do it again. I have had a couple of requests to share how. Hoping to get to that this weekend. |
I really would like to get signal on my pi4, anyone got that working? |
I’m in the same camp. I found an older compiled version, but it was outdated and would not let me use it. It ran though. Does anyone have a repo or binary fro armhf? |
This would also be quite good to have for the Pinephone. |
I've just stumbled upon this while looking for "general developments" with regards to building Signal-Desktop on aarch64. I've been building it for a while now for use on the Pinebook Pro via a PKGBUILD and in a clean chroot for Manjaro ARM systems. Maybe that PKGBUILD might give some pointers to how to build it on other systems as well, for anyone else trying/struggling? The main hurdles I had encountered were:
All the other parts of the build process are what's done by upstream-Arch as well at https://www.archlinux.org/packages/community/x86_64/signal-desktop – I'm following their releases and update things accordingly. The PKGBUILD is admittedly somewhat messy (comments hanging around etc.), sorry about that, but it works for building Signal-Desktop directly on an aarch64 device :) I'm open to pointers for handling some of those issues more elegantly – I'm very far from being an expert on node, electron and the whole npm-ecosystem. -- you cand find my efforts at: https://gitlab.com/ohfp/pinebookpro-things/-/blob/master/signal-desktop/PKGBUILD An example to build it in a clean chroot from this PKGBUILD, once you've built the dependencies, would be: export CHROOT=/path/to/your/chroot
makechrootpkg -c -r $CHROOT \
-I ../dependencies/icu60/icu60-60.3-1-aarch64.pkg.tar.xz \
-I ../dependencies/nvm/nvm-0.35.3-1-any.pkg.tar.xz \
-I ../dependencies/phantomjs/phantomjs-2.1.1-9-aarch64.pkg.tar.xz \
-I ../dependencies/ruby-arr-pm/ruby-arr-pm-0.0.10-1-any.pkg.tar.xz \
-I ../dependencies/ruby-backports/ruby-backports-3.15.0-1-any.pkg.tar.xz \
-I ../dependencies/ruby-cabin/ruby-cabin-0.8.1-1-any.pkg.tar.xz \
-I ../dependencies/ruby-childprocess-0.7/ruby-childprocess-0.7-0.7.1-2-any.pkg.tar.xz \
-I ../dependencies/ruby-clamp/ruby-clamp-1.2.1-1-any.pkg.tar.xz \
-I ../dependencies/ruby-dotenv/ruby-dotenv-2.7.5-1-any.pkg.tar.xz \
-I ../dependencies/ruby-insist/ruby-insist-1.0.0-3-any.pkg.tar.xz \
-I ../dependencies/ruby-io-like/ruby-io-like-0.3.0-1-any.pkg.tar.xz \
-I ../dependencies/ruby-json-1/ruby-json-1-1.8.6-5-aarch64.pkg.tar.xz \
-I ../dependencies/ruby-stud/ruby-stud-0.0.22-1-any.pkg.tar.xz \
-I ../dependencies/ruby-xz/ruby-xz-0.2.3-1-any.pkg.tar.xz \
-I ../dependencies/ruby-pleaserun/ruby-pleaserun-0.0.31-2-any.pkg.tar.xz \
-I ../dependencies/fpm/fpm-1.11.0-1-any.pkg.tar.xz Your pathes and versions could, of course, be different. |
I'm trying to cross-compile latest master (1.34.1 as of this writing) and I can build an arm64 .deb, but I have the same problems as everyone else in this thread with the incompatible Chrome object in /tmp. I'll try to pivot from the PKGBUILD instructions above from @lsfxz but I'm not using Arch -- I'm building on WSL2 (Ubuntu) for an arm64 Chrome-OS linux container (Lenovo Duet tablet) . Not expecting much luck but I'll give it a go... |
A bit of progress! The app opens and I see a big wash of Signal Blue. But nothing after that. Some of the menu items work e.g. for opening help URLs, but I cannot link my account or open preferences. To get this far, I built it (verry slowly) on the chromebook itself, instead of cross-compiling. Used the patches from @lsfxz above. The log output appears to say that the app has started up, the sqlite and sqlcipher libraries have loaded, spellcheck is on.... and then it just sits there. I need to figure out how to get more verbose logging in order to find out what is missing. I will keep banging on this for a while... |
having signal-desktop packaged for arm64 will make my pinephone fly. Hopefully the team will consider such option |
It makes me very sad, that Telegram (which is implemented in C++) does work on arm64/aarch64 with ready to install packages from Arch, but for Signal-Desktop (implemented in JavaScript), which runs basically in a browser it is not possible at all. Don't get me wrong, I dislike Telegram very much from non-technical point of views, but in this regard they are IMHO far ahead. |
I'm no pro at Electron apps so I'm wondering if someone can help me debug this. The import of the native 'zkgroup' package is failing, and it is failing when it tries to import the 'ffi-napi' package. But what is strange is that I can add a The zkgroup package itself (and libzkgroup too) seems to be building properly and even passes all tests. Does someone have an idea why ffi-napi would be importable in the app's main.js, but not in one of its dependencies? This is baffling to me. |
i installed signal messenger on a pinebook pro using the privacyshark repo. works great! |
I managed to build it on Linux for aarch64: however it crashes in the same way as @deltatux describes above. To build, I built the steps outlined in build one by one manually, separating the electron builder step as to allow providing the required arch flags.
When starting, it exits with an unhandled error Device info: |
To everyone trying to run it on the PinePhone, remember that the desktop client interface isn't responsive at the moment. So even if we succeed to run the app correctly on the phone, you won't be able to use it at least while #2454 isn't solved. |
Hey Signal team. I run Beekeeper Studio, which is also Electron. I just figured out how to build ARM64 and ARMv7l binaries and have an Maybe I could host a GitHub worker on that box for you? The box has plenty of spare capacity. That way you can support ARM builds and I can get Signal on my Pi4 :-D. If you don't want to do that I just wrote a guide for building on ARM. I basically just documented how I set up my a1 box. Let me know if you're open to it! |
@rathboma did you actually try to build Signal targeting ARM? Did the application launch after that? If so, can you post the steps you did here? Having a build provided automatically by OWS would be cool but being able to build it at all is the first step. |
I'll chime in again to maybe give some pointers to those trying to achieve or provide Signal-Desktop for ARM: I'm still keeping up providing an arm64/aarch64-build over at https://gitlab.com/ohfp/pinebookpro-things/-/tree/master/signal-desktop. I have to employ several more or less ugly workarounds, mainly:
Most of this should be possible to do for armv7 more or less the same way; the ¹ I have forked # fork of signalapp/ringrtc with some slight modifications to the build scripts
git clone https://github.com/lsfxz/ringrtc
cd ringrtc
git checkout aarch64
# the arch/Manjaro depot tools do not seem to agree with the build scripts
git clone https://chromium.googlesource.com/chromium/tools/depot_tools ../depot_tools
cd ..
export PATH="$(pwd)/depot_tools:${PATH}"
# we need clang 11. the included clang is not provided for aarch64 by ringrtc
# and the manjaro clang is "too old" with version 10
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0-rc2/clang+llvm-11.0.0-rc2-aarch64-linux-gnu.tar.xz -O clang11.tar.xz
mkdir -p clang11
tar --strip-components=1 -C ./clang11 -xf clang11.tar.xz
rm -f clang11.tar.xz
export PATH="$(pwd)/clang11/bin:${PATH}"
# the clang archive seems to be linked against libtinfo.so.5, so we need ncurses5-compat-libs
yay -S --needed rustup ncurses5-compat-libs ninja yarn
rustup toolchain install 1.44.1
rustup default 1.44.1
cd ringrtc
bin/prepare-workspace unix
make distclean
make electron
# if everything went well, the aarch64-binary is now available at ./src/node/build/linux/libringrtc.node |
With that build, is the Signal client fully functional? |
If you are trying to get Signal Desktop building on ARM Linux so you can use it on Chromebooks, Pinetab, or Pinebook, solving this issue would be sufficient for that use case. @dennisameling has made good progress fixing the builds of the dependencies for ARM. It looks like the only remaining blocker is ringrtc. For those hoping that implementing this will make Signal Desktop usable on PinePhone and Librem 5, fixing the ARM build would only be the first step. The UI would also need to be made responsive (#2454). However, that would only be a helpful stopgap because the Signal Desktop developers have stated on another issue (#2383) that they do not want to make Signal Desktop have feature parity with the Android and iOS clients. So I think it is best that we work on an independent native Linux Signal client. As I explained on that other issue, I think the best path forward for that is decoupling Whisperfish from Sailfish OS so it can use KDE Plasma Mobile's Kirigami QML library. If you know Rust or QML or are willing to learn them, we'd love your help! Come join the Whisperfish Matrix room at #whisperfish:rubdos.be. There isn't any code to test yet unless you have a device running Sailfish OS. Please don't bother the Signal developers by responding about independent clients here; come to the Whisperfish Matrix room if you're interested in this. |
With the partial exception of ringrtc, I have compiled all of the required components to build Signal-Desktop for Linux on Arm64 into a docker container and build script at https://gitlab.com/undef1/signal-desktop-builder. There are a few patches/rebuilds required for dependencies (libsignal-client, better-sqlite3, zkgroup) but the script builds all of that automatically. |
@Undef-a don't know if this helps, but I was able to cross-compile RingRTC from a x64 Linux host: signalapp/ringrtc#12 (comment) Native binaries can be found here: https://github.com/dennisameling/signal-ringrtc-node/tree/cross-compilation-support-new/build/linux Compiling on arm64 is even cooler, so it's great to see you're working on that 🚀 |
That's going to make RingRTC much easier. Nice work. My RingRTC work has been packaging https://github.com/lsfxz/ringrtc/tree/aarch64, but the cross compile seems to be the better way forward. |
@Undef-a CircleCI now has Linux arm64 support (the only free arm64 CI option AFAIK), so I created a basic workflow for it: https://github.com/dennisameling/Signal-Desktop/blob/multi-arch-support/.circleci/config.yml It failed on |
FYI I tried the build script/docker image at https://gitlab.com/undef1/signal-desktop-builder, and it failed with: gyp: binding.gyp not found (cwd: /Signal-Desktop/node_modules/@signalapp/signal-client) while trying to load binding.gyp (host running debian bullseye/aarch64) But I hope Signal starts distributing arm64 binaries at some point! |
Any debian .deb arm64 package already built for Debian 10 (stable) or 11 (testing, but already in software freeze)? |
That was a naming issue with the arm64 build of libsignal-client. Should be fixed (along with the same bug in libzkgroup) in the latest version. |
I was successful in building this package. I have now linux-arm64-unpacked folder with all the necessary files. I tried to run signal-desktop in my Pinephone Mobian. The logs on the terminal are showing normal run but there is no Signal-Desktop gui on the screen. If I switch between applications, it shows some blue screen for some time then it vanishes off. Moreover I didn't build it with the provided docker image, it was failing. I built one of ubuntu image, and use the Docker build for the rest of the commands. |
Spent a few days trying to figure out how to build Signal on my Raspberry Pi 4 running Ubuntu 21.04. Managed to find @lsfxz solution in this thread, and I adapted it to be used with Ubuntu. Notable efforts: Just running I repackaged my steps in a small bash script. It should go pretty smoothly by itself, and you'll find the |
Hi all, Update regarding Linux ARM64 support! A bunch of (native) dependencies have been updated now which makes it much easier to build Signal on Linux ARM64. Especially
I was able to build and run the latest version on Ubuntu 20.04: signalapp/better-sqlite3#1 |
As all the deps now support arm64, what has stalled in regards to official arm64 linux builds? |
If you are using Asahi Linux you can now install Signal beta quite easily, see #6063 (comment) |
This still requires building signal-desktop on your own, which is kinda badly supported when it comes to reporting issues. I'm still looking forward to having an official and regular signal-desktop builds provided by the Signal team. |
@flokli The only thing missing to be able to build a Linux aarch64 binary is to upgrade |
Official .deb creation for arm64 would be nice. I'm already using signal in my PinePhone (maemo) and I can say it is pretty useful. |
@rafael2k You can find |
Thanks! |
btw, where is the "debian/" directory which was used to create this debian package? |
Here's the CircleCI pipeline that creates the Debian package: https://github.com/dennisameling/signal-desktop-automation/blob/main/.circleci/config.yml |
If you are using a Debian-based ARM64 OS, you can use Pi-Apps to install Signal. |
Bug Description
I have a Acer Chromebook r13 and I'm trying to use signal desktop on it under crostini on ChromeOS.
Currently the Android app doesn't work on tablets, and it seems that ChromeOS falls under this category.
Also, armv7 compatibility with raspberry pi brings in complications with older board versions that don't support HF, so I'm not asking for that. armv7hf may be an ok compromise. It won't work on old RPI boards, but anything armv7hf compatible and up will.
Any chance the .deb can be built for armv7hf and/or arm64?
Steps to Reproduce
Actual Result:
No .deb package for arm.
Expected Result:
.deb package for arm in signal apt repo.
Screenshots
Platform Info
Signal Version:
Operating System:
cat /etc/release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Linked Device Version:
Link to Debug Log
The text was updated successfully, but these errors were encountered: