Skip to content
Snippets Groups Projects
Commit b26be7a9 authored by Amin Bandali's avatar Amin Bandali
Browse files

build: add dependencies page

Change-Id: I6220d111eb2826428462ba68c42fa9836c093834
parent 19861c70
No related branches found
No related tags found
No related merge requests found
Dependencies
============
Jami is a large and complex piece of software, and depends on several
external free software libraries. Here we outline these dependencies
and how to install them with a few popular package systems.
..
TODO: distinguish between build time and run time dependencies ?
..
TODO: give separate instructions for dnf and zypper ?
jami-daemon
-----------
Building the Jami daemon currently requires the following tools and
libraries:
- GNU Autotools (autoconf, autoconf-archive, autopoint, and automake)
- GNU Compiler Collection's C++ compiler (GCC's g++)
- GNU Make
- GNU gettext
- GNU Libtool
- GnuTLS
- argon2
- asio
- dbus
- dbus-c++
- libupnp
- libssl
- libpulse
- libasound2
- libexpat
- pcre3
- yaml-cpp
- libxext
- libxfixes
- speex
- speexdsp
- uuid
- FFmpeg's libavcodec, libavdevice, libswscale, libavutil
- opus
- udev
- fmt
- gsm
- pjproject (Jami's custom fork needed)
- jsoncpp
- libarchive
- libnatpmp
- libva
- libcrypto++
- libvdpau
- libsecp256k1
- libgit2
- http-parser
- nasm
- yasm
- nettle
- opendht
- restinio
- webrtc-audio-processing
- zlib
On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel,
and Ubuntu you can install these using packages using ``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 distributions like Fedora and openSUSE the dependencies
can be installed using ``dnf``, ``yum``, or ``zypper`` like so::
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
We will do our best to keep the above list up-to-date, but in case you
face any issues with missing dependencies you can always check the
package definitions for Jami packages distributed via dl.jami.net, as
well as the ``build.py`` script, available in the ``jami-project``
repository.
jami-client-qt
--------------
Building the Jami Qt client currently 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 provide the
needed Qt 6 dependencies on supported dpkg/deb-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 was not yet packaged in the distribution's official repositories.
To install this package providing the Qt 6 dependencies on a supported
distribution, first add the respective dl.jami.net repository by
following the instructions on the `Download Jami for GNU/Linux
<https://jami.net/download-jami-linux/>`_ page of the Jami website,
then install the package using a command like ``sudo apt-get install
libqt-jami`` (for dpkg/deb-based GNU/Linux distributions) and ``sudo
dnf install jami-libqt`` (for rpm-based GNU/Linux distributions).
On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel,
and Ubuntu you can install these using packages using ``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
And for the optional Qt WebEngine dependencies::
sudo apt-get install libqt6webengine6-data \
libqt6webenginecore6-bin qt6-webengine-dev \
qt6-webengine-dev-tools qml6-module-qtwebengine \
qml6-module-qtwebchannel
On rpm-based distributions like Fedora and openSUSE the dependencies
can be installed using ``dnf`` or ``zypper`` like so::
sudo dnf install qt6-qtbase-devel qt6-qtsvg-devel \
qt6-qtmultimedia-devel qt6-qtdeclarative-devel qrencode-devel \
NetworkManager-libnm-devel
And for the optional Qt WebEngine dependencies::
sudo dnf install qt6-qtwebengine-devel
.. note:: Given the newness of Qt 6, it may not be fully (or at all)
packaged in the official repositories of your GNU/Linux
distribution of choice yet. In that case, the easiest
approach would be to install the libqt-jami or jami-libqt
package on your supported dpkg/deb-based and rpm-based
GNU/Linux distribution respectively, to get all of the
needed Qt 6 dependencies of Jami.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment