Building Signal Desktop on Fedora

I've been making my own RPMs of Signal Desktop app since Fedora 26 but always on the same laptop and without documenting the process. Now I had to setup a new laptop for myself with Fedora 28 so I better write down how I built the Signal RPM.

Since writing this guide I've built Signal-Desktop using this method on the following Fedoras.

  • Fedora 27

  • Fedora 28

  • Fedora 29

  • Fedora 30

Setup rpmbuild

Pick somwhere to build your RPMs, I've picked ''$HOME/src/rpmbuild'' and hard coded that into my .rpmmacros file. So it looks like this.

<file>%_topdir %(echo $HOME)/src/rpmbuild %_tmppath %(echo $HOME)/src/rpmbuild/tmp

%__arch_install_post \ [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \ case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \ /usr/lib/rpm/check-buildroot </file>

Don't ask me what the last part does, I don't remember. But the first two lines are pretty self-explanatory and used by the rpmbuild command later.

$ mkdir -p $HOME/src/rpmbuild
$ mkdir $HOME/src/rpmbuild/{SPECS,SOURCES}

Download SPEC and SOURCE for Signal

The spec file is key to any RPM building and I got mine from a kind person on github. That link is straight to the commit that I was using when this guide was written. Which is important to note since at the moment for example 1.15 release of Signal is broken on Fedora. Issues like that might happen in the future.

Put it into the SPECS directory.

Download the source release tarball into the SOURCES directory.

$ curl -Lso SOURCES/v1.27.4.tar.gz

OBSERVE since 2019-10 I'm no longer sure how to use this repos build setup so I've modified the spec file and it works for me. So either use theirs or use my spec file.

Install yarn

Some might install it using npm as a global package later but I prefer using official repos. So follow those instructions on installing the yarn repo.

Install dependency packages

$ sudo dnf install rpm-build nodejs
$ sudo dnf install gcc-c++ node-gyp yarn '@Development Tools'


$ rpmbuild -bb SPECS/signal-desktop.spec


$ sudo dnf install RPMS/x86_64/signal-desktop-1.27.4-0.fc30.x86_64.rpm