HowTo build Signal Desktop on OpenSuse/Fedora/CentOS
I use, among others, the Signal App as messenger. Of course, I also want to use the advantages of running a client also on my OpenSuse-based Laptop.
Sadly, Open Whisper Systems does only provide packages for Ubuntu-based systems…so I need to build it by myself.
Following the build instructions for developers, the build will fail due to some incompatibilities in the dependencies (see e.g. here).
Due to permanent updates of the app, I’ve to rebuild it once in a while…and here is how:
1. Check out a recent version
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
git tag # find a recent version (beta or not, as you prefer)
git checkout <version>
2. Follow the initial build instructions
npm install --global yarn # (only if you don’t already have `yarn`)
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
yarn build:webpack # Build parts of the app that use webpack (Sticker Creator)
3. Update manually some linking instructions
This was figured out by the Team of this repo and please find more details here. We must ensure that the sqlite3 library is linked dynamically:
# in the Signal-Desktop directory
$ vim node_modules/@journeyapps/sqlcipher/deps/sqlite3.gyp
# and then:
@@ -64,16 +64,14 @@
},
'link_settings': {
'libraries': [
- # This statically links libcrypto, whereas -lcrypto would dynamically link it
- '<(SHARED_INTERMEDIATE_DIR)/sqlcipher-amalgamation-<@(sqlite_version)/OpenSSL-macOS/libcrypto.a'
+ '-lcrypto'
]
}
},
{ # Linux
'link_settings': {
'libraries': [
- # This statically links libcrypto, whereas -lcrypto would dynamically link it
- '<(SHARED_INTERMEDIATE_DIR)/sqlcipher-amalgamation-<@(sqlite_version)/OpenSSL-Linux/libcrypto.a'
+ '-lcrypto'
]
}
}]
@@ -140,8 +138,7 @@
{ # linux
'include_dirs': [
'<(SHARED_INTERMEDIATE_DIR)/sqlcipher-amalgamation-<@(sqlite_version)/',
- '<(SHARED_INTERMEDIATE_DIR)/sqlcipher-amalgamation-<@(sqlite_version)/openssl-include/'
]
}]
],
3. Build the binary
$ export SIGNAL_ENV=production
$ yarn --verbose build-release --linux
Afterwards, the binary is in Signal-Desktop/release/linux-unpacked/signal-desktop
.
You may want to create a symlink:
sudo ln -s /path/to/Signal-Desktop/release/linux-unpacked/signal-desktop /usr/local/bin/signal-desktop