[WIKI] Guide on how to build Jami on Void Linux
I want to write this Guide on how to build GNU Jami on Void Linux as I didn't find it easy and want to save some people from headaches (Trying to build Jami with the build.py script fails with a dangerous relocation; recompile with -fPIC
error (atleast in my case))
I have built Jami on Void Linux glibc, I don't know if it will build for musllibc as well.
Date of writing: 25th of August 2023
Install the dependencies:
sudo xbps-install msgpack-cxx asio cppunit-devel libnma qrencode-devel qt6-multimedia qt6-networkauth-devel qt6-tools-devel libva-vdpau-driver libvdpau-devel libgit2-devel
gnutls-devel speex-devel libbitcoin-secp256k1 webrtc-audio-processing-devel libnma-devel
qt6-svg-devel qt6-dbus libdbus-c++-devel libupnp-devel qt6-quick3d-devel qt6-quick3d-tools
qt6-declarative-devel qt6-qt5compat-devel yaml-cpp-devel
optional dependencies (Qt Webengine):
sudo xbps-install qt6-webengine-devel
Note: some of the listed dependencies may not be needed, i just installed many -devel
packages, just in case.
Clone Jami:
git clone https://review.jami.net/jami-client-qt
cd jami-client-qt
git submodule update --recursive --init
IMPORTANT: Build the daemon with meson:
cd daemon/contrib
mkdir native
cd native
../bootstrap
make -j$(nproc)
# Then copy the sdbus-c++-xml2cpp to /usr/bin, so that it will get detected properly:
sudo cp ../x86_64-linux-gnu/bin/sdbus-c++-xml2cpp /usr/bin/
cd ../../
mkdir build
export PATH=$PATH:`pwd`/contrib/`cc -dumpmachine`/bin
meson -Dpkg_config_path=`pwd`/contrib/`cc -dumpmachine`/lib/pkgconfig -Ddefault_library=static -Dinterfaces=dbus build
cd build
ninja
sudo ninja install # install globally, to /usr/local
# Let the meson build run until it fails because it can't find the include files, then copy the include files to /usr/local/include:
sudo cp -r ../contrib/x86_64-linux-gnu/include/* /usr/local/include/
Now build the client using cmake:
cd ../../
mkdir build
cd build
cmake ..
# If you want to configure without the Qt Webengine run: cmake .. -DWITH_WEBENGINE=OFF
make -j$(nproc)
sudo make install # install globally, to /usr/local
Once you got it installed, Jami probably won't be able to establish an internet connection, to fix this, if you already use NetworkManager, log out and log back in again and try again. If you use something other than NetworkManager, enable NetworkManager as a service, disable your actual networking manager daemon (eg. connmand), then try, log out, log back in and you should have a connection, then you can disable NetworkManager again and enable your the networking manager daemon that you actually want to use (like connmand for example).
Known issue as of the time of writing (This is also happens on other Distros): The client crashes with a segmentation fault when closing its window or clicking on its tray icon (normally I do it in order to make the window disappear, but keep the client and daemon running in the background)
Be sure to let me know how this guide can be improved.