Skip to content
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

Closed
1 task done
mikefedyk opened this issue Jun 21, 2019 · 74 comments
Closed
1 task done

Support Linux with armv7hf/arm64 processors #3410

mikefedyk opened this issue Jun 21, 2019 · 74 comments

Comments

@mikefedyk
Copy link

mikefedyk commented Jun 21, 2019

  • I have searched open and closed issues for duplicates

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

  1. Use crostini on arm based Chromebook
  2. Try to install signal-desktop .deb with apt-get
  3. Notice missing package.

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

@scottnonnenberg-signal scottnonnenberg-signal changed the title Build on armv7hf/arm64? Support Linux with armv7hf/arm64 processors Jun 21, 2019
@taigrr
Copy link

taigrr commented Nov 14, 2019

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.)

@taigrr
Copy link

taigrr commented Nov 15, 2019

I ended up cross-compiling it because my chromebook was too slow :P

It works great, though. Here are the steps I followed:


git clone https://github.com/signalapp/Signal-Desktop.git # I used ssh, not https, but ymmv
git checkout v1.28.0 # or whatever version
# curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # install nodejs & npm if you do it on a chromebook
# sudo apt-get install -y nodejs
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash # install nvm
# (restart shell)
sudo npm i -g npm yarn # install nvm, update npm
npm config delete prefix # make it stop complaining
# cd into cloned repo
nvm use # switch node version to be compatible
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
yarn grunt                     # Generate final JS and CSS assets
yarn icon-gen                  # Generate full set of icons for Electron
SIGNAL_ENV=production yarn build --linux --arm64 # cross-compile a .deb file

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)

sudo apt install -f libnotify4 libappindicator1 libnss3 
sudo dpkg -i signal-desktop_1.28.0_arm64.deb

Hope it helps!

@rj45jack
Copy link

I ended up cross-compiling it because my chromebook was too slow :P

It works great, though. Here are the steps I followed:


git clone https://github.com/signalapp.git # I used ssh, not https, but ymmv
git checkout v1.28.0 # or whatever version
# curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # install nodejs & npm if you do it on a chromebook
# sudo apt-get install -y nodejs
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash # install nvm
# (restart shell)
sudo npm i -g npm nvm yarn # install nvm, update npm
npm config delete prefix # make it stop complaining
# cd into cloned repo
nvm use # switch node version to be compatible
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
yarn grunt                     # Generate final JS and CSS assets
yarn icon-gen                  # Generate full set of icons for Electron
SIGNAL_ENV=production yarn build --linux --arm64 # cross-compile a .deb file

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)

sudo apt install -f libnotify4 libappindicator1 libnss3 
sudo dpkg -i signal-desktop_1.28.0_arm64.deb

Hope it helps!

Thanks for the info on how to build for a Chromebook.

I am getting an error.

warning " > react-contextmenu@2.11.0" has unmet peer dependency "prop-types@^15.0.0". warning " > grunt-gitinfo@0.1.7" has incorrect peer dependency "grunt@~0.4.5". warning "react-styleguidist > webpack-dev-server@2.11.2" has incorrect peer dependency "webpack@^2.2.0 || ^3.0.0". warning "react-styleguidist > webpack-dev-server > webpack-dev-middleware@1.12.2" has incorrect peer dependency "webpack@^1.0.0 || ^2.0.0 || ^3.0.0". error An unexpected error occurred: "EPERM: operation not permitted, symlink '../../../../node-pre-gyp/bin/node-pre-gyp' -> '/var/host/media/removable/usbstick/Signal-Desktop/node_modules/@journeyapps/sqlcipher/node_modules/.bin/node-pre-gyp'".

Any insight?

PS: You were joking about taking a while to build, yikes.

@deltatux
Copy link

deltatux commented Jan 7, 2020

I ended up cross-compiling it because my chromebook was too slow :P

It works great, though. Here are the steps I followed:


git clone https://github.com/signalapp.git # I used ssh, not https, but ymmv
git checkout v1.28.0 # or whatever version
# curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # install nodejs & npm if you do it on a chromebook
# sudo apt-get install -y nodejs
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash # install nvm
# (restart shell)
sudo npm i -g npm nvm yarn # install nvm, update npm
npm config delete prefix # make it stop complaining
# cd into cloned repo
nvm use # switch node version to be compatible
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
yarn grunt                     # Generate final JS and CSS assets
yarn icon-gen                  # Generate full set of icons for Electron
SIGNAL_ENV=production yarn build --linux --arm64 # cross-compile a .deb file

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)

sudo apt install -f libnotify4 libappindicator1 libnss3 
sudo dpkg -i signal-desktop_1.28.0_arm64.deb

Hope it helps!

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!

@taigrr
Copy link

taigrr commented Jan 9, 2020

@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.

@cj1171
Copy link

cj1171 commented Jan 10, 2020

@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!
edit: tried doing 1.29.3 and it builds properly but I run into the same issue as @deltatux

@mihalis68
Copy link

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! :)

@keithzg
Copy link

keithzg commented Feb 20, 2020

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, SIGNAL_ENV=production yarn build --linux --arm64, gives me

ERROR: Invalid Option: --linux

and hilariously yarn help build just gives a "full" list of commands I could request help about, none of them being yarn build. It's bad enough that Signal-Desktop doesn't have documentation on how to build it, but even the commands it uses to build aren't documented?

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.

@mihalis68
Copy link

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.

@manderss99
Copy link

I really would like to get signal on my pi4, anyone got that working?

@Syirrus
Copy link

Syirrus commented Mar 4, 2020

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?

@saroman2
Copy link

This would also be quite good to have for the Pinephone.

@lsfxz
Copy link

lsfxz commented May 17, 2020

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:

  • Rebuilding via gyp demands phantomjs which is horrible to build on aarch64, so I resorted to using an old binary from Archlinux ARM (which requires an old icu as well)
  • Patching things (sqlcipher/openssl-linking) via patch-package or earlier didn't seem to survive yarn pulling things in afresh for rebuilding, so things get manually pulled, patched and referenced in the package.json
  • ruby-fpm is required during build, with all its dependencies, using USE_SYSTEM_FPM – otherwise an x86_64 one is used
  • more recently: zkgroup-node uses ffi-napi at a version without aarch64 support, so that gets patched
  • also a precompiled .so is used, so we need to build it ourselves and provide the correct one for the architecture

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.

@billyc
Copy link

billyc commented Jun 8, 2020

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...

@billyc
Copy link

billyc commented Jun 8, 2020

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...

@rascarlo
Copy link

rascarlo commented Jun 9, 2020

having signal-desktop packaged for arm64 will make my pinephone fly. Hopefully the team will consider such option

@cinemast
Copy link

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.

@billyc
Copy link

billyc commented Jun 15, 2020

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 require("ffi-napi") to main.js, and it imports without crashing.

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.

@p3k
Copy link

p3k commented Jul 11, 2020

i installed signal messenger on a pinebook pro using the privacyshark repo. works great!

@olof-nord
Copy link

olof-nord commented Aug 23, 2020

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.

git clone https://github.com/signalapp/Signal-Desktop.git
git checkout v1.34.5

nvm use

yarn install --frozen-lockfile
yarn build:grunt
yarn build:typed-scss
yarn build:webpack
SIGNAL_ENV=production yarn build:release --linux --arm64

scp signal-desktop_1.34.5_arm64.deb mobian@192.168.0.17:/home/mobian/Downloads/

sudo dpkg -i signal-desktop_1.34.5_arm64.deb
sudo apt-get -f install

When starting, it exits with an unhandled error /tmp/.org.chromium.Chromium.xxxxx cannot open shared object file: this is the same error as described above.

Device info:
Linux mobian 5.7-pinephone

@Flaburgan
Copy link

Flaburgan commented Aug 28, 2020

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.

@rathboma
Copy link

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 a1 box on AWS to do it.

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!

@Flaburgan
Copy link

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 a1 box on AWS to do 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.

@lsfxz
Copy link

lsfxz commented Sep 16, 2020

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:

  • use nvm to build (probably not that ugly)
  • USE_SYSTEM_FPM
  • use a locally patched node-sqlcipher (for openssl linking, patch taken from Arch)
  • use a locally built libzkgroup
  • patch signal-zkgroup-node to pull in ffi-napi >=2.4.7, as 2.4.5 does not support arm64
  • now, with Signal-Desktop >= 1.35.1: use a separately built libringrtc.node, as only a linux-amd64 binary is provided¹
  • almost forgot: I'm using a prebuilt phantomjs as well, as that's a required dependency, too

Most of this should be possible to do for armv7 more or less the same way; the PKGBUILD is more or less a shell script that could be used as a starting point for other environments.

¹ I have forked ringrtc and signal-ringrtc-node for this and modified the ringrtc-electron-build-script to use separate build tools (like clang). I've described the steps needed to get a succesful build on Manjaro (on an aarch64 machine) elsewhere as well, so here they are:

# 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

@Flaburgan
Copy link

With that build, is the Signal client fully functional?

@Be-ing
Copy link

Be-ing commented Apr 17, 2021

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.

@Undef-a
Copy link

Undef-a commented May 3, 2021

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.

@dennisameling
Copy link
Contributor

@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 🚀

@Undef-a
Copy link

Undef-a commented May 4, 2021

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.

@dennisameling
Copy link
Contributor

@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 better-sqlite3 so I gave up then, and I'm quite swamped with work at the moment so can't continue working on it. But with your patch I think it should work. Just FYI, that way you can use a cloud-hosted runner for your builds!

@greenbeauty
Copy link

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!

@rafael2k
Copy link

rafael2k commented Jul 2, 2021

Any debian .deb arm64 package already built for Debian 10 (stable) or 11 (testing, but already in software freeze)?

@Undef-a
Copy link

Undef-a commented Jul 4, 2021

gyp: binding.gyp not found (cwd: /Signal-Desktop/node_modules/@signalapp/signal-client) while trying to load binding.gyp

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.

@moonchitta
Copy link

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.

@BernardoGiordano
Copy link

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 makedeb on the PKGBUILD provided by the aforementioned user doesn't work due to issues caused by node-abi being too old in Signal Desktop's yarn.lock file, so I had to patch it as well.

I repackaged my steps in a small bash script. It should go pretty smoothly by itself, and you'll find the signal-desktop application inside Signal's release subfolders.
Have a look at the readme and the source code, and enjoy.

@dennisameling
Copy link
Contributor

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 ringrtc and libsignal-client now have official builds provided by the Signal team:

I was able to build and run the latest version on Ubuntu 20.04: signalapp/better-sqlite3#1
Here's an example release of 5.32.0 in case folks want to test: https://github.com/dennisameling/Signal-Desktop/releases/tag/linux-arm64-poc

@balupton
Copy link

As all the deps now support arm64, what has stalled in regards to official arm64 linux builds?

@mkurz
Copy link

mkurz commented Sep 2, 2022

If you are using Asahi Linux you can now install Signal beta quite easily, see #6063 (comment)

@flokli
Copy link

flokli commented Jan 13, 2023

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.

@mkurz
Copy link

mkurz commented Jan 13, 2023

@flokli The only thing missing to be able to build a Linux aarch64 binary is to upgrade fpm that ships with electron build to the latest version. See my comment here: #6063 (comment)

@rafael2k
Copy link

rafael2k commented Jan 13, 2023

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.

@mkurz
Copy link

mkurz commented Jan 13, 2023

@rafael2k
Copy link

Thanks!

@rafael2k
Copy link

btw, where is the "debian/" directory which was used to create this debian package?

@dennisameling
Copy link
Contributor

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

@Botspot
Copy link

Botspot commented Feb 23, 2024

If you are using a Debian-based ARM64 OS, you can use Pi-Apps to install Signal.
https://pi-apps.io/install-app/install-signal-on-raspberry-pi/
These instructions work the same on any ARM64 system, and should work fine on chromebooks, pinephone64, Asahi linux, etc.

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

No branches or pull requests