174 lines
7.3 KiB
Markdown
174 lines
7.3 KiB
Markdown
# Dependencies
|
|
|
|
Jami is a large and complex piece of software, and depends on several external free software libraries.
|
|
The dependencies and how to install them on some systems are outlined below.
|
|
|
|
[//]: # (TODO: Distinguish between build time and runtime dependencies?)
|
|
[//]: # (TODO: Provide separate instructions for dnf and zypper?)
|
|
|
|
## jami-daemon
|
|
|
|
Building the Jami daemon requires the following tools and libraries:
|
|
|
|
- GNU Autotools (autoconf, autoconf-archive, autopoint, and automake)
|
|
- GCC (GNU Compiler Collection) C++ compiler (g++)
|
|
- [GNU Make](https://www.gnu.org/software/make/manual/)
|
|
- [GNU gettext](https://www.gnu.org/software/gettext/)
|
|
- [GNU Libtool](https://www.gnu.org/software/libtool/)
|
|
- [GnuTLS](https://gnutls.org/)
|
|
- [Argon2](https://wikipedia.org/wiki/Argon2)
|
|
- [asio](https://wikipedia.org/wiki/Audio_Stream_Input/Output)
|
|
- [dbus](https://www.freedesktop.org/wiki/Software/dbus/)
|
|
- dbus-c++
|
|
- [libupnp](https://github.com/pupnp/pupnp)
|
|
- [libssl](https://www.openssl.org/)
|
|
- [libpulse](https://gitlab.freedesktop.org/pulseaudio/pulseaudio)
|
|
- [libasound2](https://github.com/pop-os/libasound2)
|
|
- [libexpat](https://libexpat.github.io/)
|
|
- [pcre3](https://www.pcre.org/)
|
|
- [yaml-cpp](https://github.com/jbeder/yaml-cpp)
|
|
- [libXext](https://gitlab.freedesktop.org/xorg/lib/libxext)
|
|
- libxfixes
|
|
- [speex](https://www.speex.org/)
|
|
- speexdsp
|
|
- uuid
|
|
- [FFmpeg](https://ffmpeg.org/) (libavcodec, libavdevice, libswscale, and libavutil)
|
|
- [opus](https://opus-codec.org/)
|
|
- [udev](https://wikipedia.org/wiki/Udev)
|
|
- [fmt](https://github.com/fmtlib/fmt)
|
|
- gsm
|
|
- [pjproject](https://www.pjsip.org/) (custom Jami fork required)
|
|
- [jsoncpp](https://github.com/open-source-parsers/jsoncpp)
|
|
- [libarchive](https://libarchive.org/)
|
|
- [libnatpmp](https://github.com/miniupnp/libnatpmp)
|
|
- [libva](https://github.com/intel/libva)
|
|
- [libcrypto++](https://github.com/weidai11/cryptopp)
|
|
- [libvdpau](https://wikipedia.org/wiki/VDPAU)
|
|
- [libsecp256k1](https://github.com/bitcoin-core/secp256k1)
|
|
- [libgit2](https://libgit2.org/)
|
|
- [http-parser](https://pub.dev/packages/http_parser)
|
|
- [nasm](https://www.nasm.us/)
|
|
- [yasm](https://yasm.tortall.net/)
|
|
- [Nettle](https://www.lysator.liu.se/~nisse/nettle/)
|
|
- [OpenDHT](https://github.com/savoirfairelinux/opendht)
|
|
- [RESTinio](https://github.com/Stiffstream/restinio)
|
|
- [webrtc-audio-processing](https://github.com/tonarino/webrtc-audio-processing)
|
|
- [zlib](https://zlib.net/)
|
|
|
|
On dpkg/Debian-based GNU/Linux distributions
|
|
(such as [Debian](https://www.debian.org/), [Trisquel](https://trisquel.info/), [Ubuntu](https://ubuntu.com/), and [Linux Mint](https://www.linuxmint.com/)),
|
|
the packages can be installed with `apt-get` or `apt` as follows:
|
|
|
|
```
|
|
sudo apt-get install autoconf autoconf-archive autopoint automake \
|
|
cmake make dbus doxygen graphviz g++ gettext libasound2-dev \
|
|
libavcodec-dev libavdevice-dev libavformat-dev libboost-dev \
|
|
libcppunit-dev libdbus-1-dev libdbus-c++-dev libexpat1-dev \
|
|
libgnutls28-dev libgtk-3-dev libjack-dev libopus-dev \
|
|
libpcre3-dev libpulse-dev libssl-dev libspeex-dev \
|
|
libspeexdsp-dev libswscale-dev libtool libudev-dev \
|
|
libyaml-cpp-dev sip-tester swig uuid-dev yasm libjsoncpp-dev \
|
|
libva-dev libvdpau-dev libmsgpack-dev pandoc nasm dpkg-dev
|
|
```
|
|
|
|
On RPM-based GNU/Linux distributions
|
|
(such as [Fedora](https://fedoraproject.org/) and [openSUSE](https://www.opensuse.org/)),
|
|
the packages can be installed with `dnf`, `yum`, or `zypper` as follows:
|
|
|
|
```
|
|
sudo dnf install autoconf autoconf-archive automake cmake make \
|
|
speexdsp-devel pulseaudio-libs-devel libtool dbus-devel \
|
|
expat-devel pcre-devel doxygen graphviz yaml-cpp-devel \
|
|
boost-devel dbus-c++-devel dbus-devel libXext-devel \
|
|
libXfixes-devel yasm speex-devel chrpath check uuid-c++-devel \
|
|
gettext-devel gcc-c++ which alsa-lib-devel systemd-devel \
|
|
libuuid-devel uuid-devel gnutls-devel nettle-devel opus-devel \
|
|
speexdsp-devel yaml-cpp-devel swig jsoncpp-devel patch \
|
|
libva-devel openssl-devel libvdpau-devel msgpack-devel \
|
|
sqlite-devel openssl-static pandoc nasm bzip2
|
|
```
|
|
|
|
If there are any issues with missing dependencies, please check:
|
|
* The Jami package definitions, distributed on [dl.jami.net](https://dl.jami.net/); and
|
|
* The `build.py` script, on the `jami-project` repository.
|
|
|
|
## jami-client-qt
|
|
|
|
```{seealso}
|
|
For complete instructions on how to build the Qt Desktop client,
|
|
please refer to the [INSTALL.md](https://git.jami.net/savoirfairelinux/jami-client-qt/-/blob/master/INSTALL.md) file.
|
|
```
|
|
|
|
Building the Jami client requires the following tools and libraries:
|
|
|
|
- jami-daemon
|
|
- libnm
|
|
- libnotify
|
|
- libqrencode
|
|
- libayatana-appindicator or libappindicator (optional, for notifications)
|
|
- qt6-base
|
|
- qt6-declarative
|
|
- qt6-graphicaleffects
|
|
- qt6-multimedia
|
|
- qt6-networkauth
|
|
- qt6-svg
|
|
- qt6-tools
|
|
- qt6-webengine (optional, currently for link previews and some media
|
|
file previews)
|
|
|
|
The libqt-jami and jami-libqt packages from [dl.jami.net](https://dl.jami.net/) provide the required Qt 6 dependencies on supported dpkg/Debian-based and RPM-based GNU/Linux distributions, respectively.
|
|
This is especially useful for building Jami on slightly older versions of these distributions where Qt 6 is not yet packaged in the distribution's official repositories.
|
|
To install this package providing the Qt 6 dependencies on a supported distribution:
|
|
1. Add the respective [dl.jami.net](https://dl.jami.net/) repository by following the instructions on the [Download Jami for GNU/Linux](https://jami.net/download-jami-linux) webpage; and
|
|
2. Install the package using the Terminal command `sudo apt-get install libqt-jami` (for dpkg/Debian-based GNU/Linux distributions) or `sudo dnf install jami-libqt` (for RPM-based GNU/Linux distributions).
|
|
|
|
On dpkg/Debian-based GNU/Linux distributions
|
|
(such as Debian, Trisquel, Ubuntu, and Linux Mint),
|
|
the packages can be installed with `apt-get` or `apt` as follows:
|
|
|
|
```
|
|
sudo apt-get install qt6-base-dev qt6-tools-dev \
|
|
qt6-tools-dev-tools qt6-l10n-tools libqt6sql6-sqlite \
|
|
libqt6core5compat6-dev libqt6networkauth6-dev \
|
|
qt6-multimedia-dev libqt6svg6-dev qt6-declarative-dev \
|
|
qml6-module-qt-labs-qmlmodels \
|
|
qml6-module-qt5compat-graphicaleffects \
|
|
qml6-module-qtqml-workerscript qml6-module-qtmultimedia \
|
|
qml6-module-qtquick qml6-module-qtquick-controls \
|
|
qml6-module-qtquick-dialogs qml6-module-qtquick-layouts \
|
|
qml6-module-qtquick-shapes qml6-module-qtquick-window \
|
|
qml6-module-qtquick-templates qml6-module-qt-labs-platform \
|
|
libqrencode-dev libnm-dev libnotify-dev
|
|
```
|
|
|
|
To install the optional Qt WebEngine packages:
|
|
|
|
```
|
|
sudo apt-get install libqt6webengine6-data \
|
|
libqt6webenginecore6-bin qt6-webengine-dev \
|
|
qt6-webengine-dev-tools qml6-module-qtwebengine \
|
|
qml6-module-qtwebchannel
|
|
```
|
|
|
|
On RPM-based GNU/Linux distributions
|
|
(such as Fedora and openSUSE),
|
|
the packages can be installed with `dnf`, `yum`, or `zypper` as follows:
|
|
|
|
```
|
|
sudo dnf install qt6-qtbase-devel qt6-qtsvg-devel \
|
|
qt6-qtmultimedia-devel qt6-qtdeclarative-devel qrencode-devel \
|
|
NetworkManager-libnm-devel
|
|
```
|
|
|
|
To install the optional Qt WebEngine packages:
|
|
|
|
```
|
|
sudo dnf install qt6-qtwebengine-devel
|
|
```
|
|
|
|
```{note}
|
|
The easiest approach would be to install the libqt-jami or jami-libqt package on your supported dpkg/Debian-based or RPM-based GNU/Linux distribution, respectively.
|
|
This would ensure that:
|
|
* All the required Qt 6 dependencies are fetched; and
|
|
* The application is as similar as possible at what is being built and tested.
|
|
``` |