Telepathy consists of multiple components that need to be compiled and installed separately in a certain order. Initially you should start by compiling and installing telepathy-glib, then continue with mission-control and any glib-based connection managers that you need, such as telepathy-gabble (highly recommended), telepathy-haze, etc… On the Qt side, you should first compile and install telepathy-qt and then continue with any qt-based components.
GLib-based components (autotools)
All the GLib-based components at the moment use the autotools build system. The compilation and installation procedure for them is the same.
In this example, we are going to compile telepathy-glib:
PREFIX=$HOME/telepathy git clone git://anongit.freedesktop.org/telepathy/telepathy-glib cd telepathy-glib ./autogen.sh --prefix=$PREFIX make make install # optional, to install the binaries and headers in $PREFIX
PREFIX can be set to another path in your system.
Finding libraries when building other components
After building telepathy-glib and/or telepathy-qt, other components will need to be able to find their binaries and headers. This can be achieved by exporting the
PKG_CONFIG_PATH environment variable to point to the path where the pkgconfig (.pc) files of the libraries are installed.
For example, assuming that you have installed telepathy-glib in
$HOME/telepathy as in the above instructions, here is how to compile telepathy-gabble with it:
PREFIX=$HOME/telepathy git clone git://anongit.freedesktop.org/telepathy/telepathy-gabble cd telepathy-gabble PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ./autogen.sh --prefix=$PREFIX make make install # optional, to install the binaries in $PREFIX
Qt-based components (CMake)
All the Qt-based components at the moment use the CMake build system. The compilation and installation procedure for them is the same.
PREFIX=$HOME/telepathy git clone git://anongit.freedesktop.org/telepathy/telepathy-qt cd telepathy-qt mkdir build cd build PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX make make install # optional, to install the binaries and headers in $PREFIX
PKG_CONFIG_PATH environment variable here is exported in order for telepathy-qt to be able to find telepathy-glib, which is an optional (but recommended) dependency for building some unit tests.
Running unit tests
After having built a component with the
make command, you can run its unit tests by executing
make check. This will run all the automatic unit tests and will report their status on the output.
Which components should I build?
That depends on what you want, but you should probably at least build the following:
- Telepathy GLib, required as a dependency for Mission Control
- Mission Control, the Account Manager and Channel Dispatcher, which is necessary to start any connection or channel
- Telepathy Gabble, the XMPP connection manager, which also doubles as the reference CM to test things with
- A client… Empathy / KDE-Telepathy / yours…
Nice to have
- Telepathy Logger, for logging messages and events
- Telepathy Haze, for supporting many protocols that are implemented in libpurple (pidgin/adium)
- Other connection managers…
Running from a non-system prefix
Telepathy components are normally launched by the D-Bus daemon when their well-known address is requested on the bus. This is implemented by adding D-Bus .service files in the dbus services directory that tell D-Bus how to launch the necessary component, given an address. This directory is normally
For example, telepathy-gabble has the well-known address
org.freedesktop.Telepathy.ConnectionManager.gabble and therefore installs the file
$PREFIX/share/dbus-1/services/org.freedesktop.Telepathy.ConnectionManager.gabble.service that contains an
Exec= line pointing to the path of the telepathy-gabble executable.
The D-Bus daemon, by default, looks for these files in
$XDG_DATA_DIRS is a directory list, like
$PATH that defaults to
/usr/share:/usr/local/share. As you can understand, in order for your D-Bus daemon to find the .service files that you just installed from source, either your
$PREFIX must be
/usr/local, or you need to change
$XDG_DATA_DIRS to look like
However, both of these methods are usually undesirable. Changing
$XDG_DATA_DIRS must happen before your desktop session starts and it’s quite tricky to achieve, and installing in /usr or /usr/local is often undesirable because it requires root and messes up with your system.
The solution is to run an isolated dbus-daemon for your telepathy. The following script can achive this for you:
#!/bin/bash export PREFIX=$HOME/telepathy/install export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig export LD_LIBRARY_PATH=$PREFIX/lib:$PREFIX/lib/x86_64-linux-gnu export PATH=$PREFIX/bin:$PATH export XDG_DATA_DIRS=$PREFIX/share:/usr/share:/usr/local/share export QT_PLUGIN_PATH=$PREFIX/lib/x86_64-linux-gnu/plugins:/usr/lib/x86_64-linux-gnu/qt5/plugins/ dbus-launch --sh-syntax --exit-with-session /bin/bash # cleanup - --exit-with-session waits for SIGHUP to quit dbus-daemon DBUS_LAUNCH_PID=`ps | grep dbus-launch | cut -d' ' -f1` kill -HUP $DBUS_LAUNCH_PID
Running the above script will launch a shell with an independent dbus session, where you can start telepathy clients and work with them. You could also replace
/bin/bash in the
dbus-launch command line directly with a client, like
empathy if you prefer to launch the client directly instead of dropping in a shell.