Welcome to Ring’s documentation!¶
As a new user, getting started is a good place to start.
As a developer looking to get started with a contribution, see contributing and how to build.
Getting Started¶
To get started with Ring, you can install it from our repositories. Instructions on installing Ring can be found on the download section of the Ring website.
Connecting Ring contacts to LDAP¶
It is possible for Ring to search contacts in an LDAP directory. At the moment, this is only possible with the Gnome client. This is done by configuring gnome-contacts and evolution to search LDAP for contacts.
Connecting gnome-contacts to LDAP¶
- Open Evolution
- From the contacts tab, right click and select New Address Book
- Fill the requested information depending on your LDAP configuration. Here is an example:
Connecting to LDAP section:¶
Field | Value |
---|---|
Type | On LDAP Servers |
name | <choose a name> |
Autocomplete with this address book | checked |
server | hostname of your LDAP server |
port | port of your LDAP server |
Authentication Method | Using distinguished name (DN) |
Authentication Username | <ldap username> |
Using LDAP section:¶
Field | Value |
---|---|
Search base | ou=Users,dc=enterprise,dc=net |
Search Scope | Subtree |
Download limit | 100 |
Browse until limit is reached | checked |
- Launch gnome-contacts. You should be asked for your LDAP password and the LDAP contacts will appear.
- Launch Ring and your LDAP contacts will be shown.
Setting up a TURN or STUN server¶
Ring can be configured to use TURN or STUN servers (RFC5766) to establish a connection between two peers.
In this guide, we will setup a coturn server. There are other TURN/STUN server implementations available under a free license. See TurnServer and Restund.
1. Installing¶
COTURN is available in most Linux distributions. On Debian, install it with the following command:
apt-get install coturn
2. Configuring¶
Here is a basic turnserver.conf
file:
listening-port=10000
listening-ip=0.0.0.0
min-port=10000
max-port=30000
lt-cred-mech
realm=sfl
no-stun
3. Creating users on your TURN server¶
To create users on your TURN server, use the turnadmin
binary.
turnadmin -a -u bob -p secretpassword -r sfl
4. Launching the TURN server¶
turnserver -c turnserver.conf
5. Configuring Ring to authenticate to the TURN server¶
You may configure Ring to use your TURN server from the advanced tab your account settings:
Field | Value | Example |
---|---|---|
server url | host and port of your server | 0.0.0.0:10000 |
username | username | bob |
password | password | secretpassword |
realm | realm | sfl |
Contributing¶
Ring loves external contributions but we do not use the Github PR system. Instead, we host a public gerrit server: https://gerrit-ring.savoirfairelinux.com
Before submitting a contribution, you need to register on our Gerrit server either with your Github or Google account.
Head to the settings section to set one of the following:
- http password and username: https://gerrit-ring.savoirfairelinux.com/#/settings/http-password
- ssh key: https://gerrit-ring.savoirfairelinux.com/#/settings/ssh-keys
In each Ring submodule there is a .gitreview
file. It contains all the
necessary info to send a patchset to our gerrit server.
After you commited your changes (one or multiple commits) you can submit them with:
git-review
More documentation on Gerrit can be found on the official website.
Making Changes¶
[Optionnal] Create a ticket in our Tuleap bug tracker https://tuleap.ring.cx/projects/ring
Make commits of logical units.
Check for unnecessary whitespace with git diff –check before committing.
- Make sure your commit messages are in the proper format
- 50 chars title
- 80 chars message width
Compiling and installing¶
This section covers compiling the different components of Ring.
Using the make-ring script (recommended)¶
Dependencies¶
The Ring installer uses python3. Please make sure it is installed before running it.
Initialize the repositories¶
./make-ring.py --init
On Linux¶
- Build and install all the dependencies:
./make-ring.py --dependencies
Your distribution’s package manager will be used.
- Build and install locally under this repository:
./make-ring.py --install
- Run daemon and client that were installed locally:
./make-ring.py --run
You can then stop the processes with CTRL-C.
You can also run them in the background with the --background
argument and then use the --stop
command to stop them. Stdout and stderr go to daemon.log and client-gnome.log.
Install globally for all users instead¶
./make-ring.py --install --global-install
Run global install:
gnome-ring
This already starts the daemon automatically for us.
Uninstall the global install:
./make-ring.py --uninstall
On OSX¶
You need to setup Homebrew (<http://brew.sh/>) since their is no built-in package manager on OSX.
Build and install all the dependencies:
./make-ring.py --dependencies
Build and install locally under this repository:
./make-ring.py --install
Output¶
You can find the .app file in the ./install/client-macosx
folder.
On Android¶
Please make sure you have the Android SDK and NDK installed, and that their paths are properly set. For further information, please visit <https://github.com/savoirfairelinux/ring-client-android>
Build and install locally under this repository:
./make-ring.py --install --distribution=Android
Output¶
You can find the .apk file in the ./client-android/ring-android/app/build/outputs
Just the daemon (advanced)¶
Linux¶
1. Compile the dependencies¶
cd contrib
mkdir native
cd native
../bootstrap
make
2. Compiling dring¶
cd ../../
./autogen.sh
./configure
make
OSX¶
1. Installing dependencies¶
Without a package manager
cd extras/tools
./bootstrap
make
export PATH=$PATH:/location/of/ring/daemon/extras/tools/build/bin
With a package manager (macports or brew)
- Install the following:
- automake
- pkg-config
- libtool
- gettext
- yasm
2. Compiling dependencies¶
cd contrib
mkdir native
cd native
../bootstrap
make -j
3. Compiling the daemon¶
cd ../../
./autogen.sh
./configure --without-dbus --prefix=<install_path>
make
If you want to link against libringclient and native client easiest way is to
add to ./configure: --prefix=<prefix_path>
Done!
Common Issues¶
autopoint not found:
When using Homebrew, autopoint is not found even when
gettext is installed, because symlinks are not created.
Run: brew link --force gettext
to fix it.
Clang compatibility (developers only)¶
It is possible to compile dring with Clang by setting CC and CXX variables to ‘clang’ and ‘clang++’ respectively when calling ./configure.
Currently it is not possible to use the DBus interface mechanism, and the interaction between daemon and client will not work; for each platform where dbus is not available the client should implement all the methods in the *_stub.cpp files.
Just libRingClient (advanced)¶
Basic Installation¶
These are generic installation instructions.
To install the appplication, type the following commands in a console, while in the root directory of this application:
mkdir -p build
cd build
cmake ..
make -j3
make install
The following options are often usefull to append to the cmake line:
-DRING_BUILD_DIR=<daemon install location>
-DCMAKE_INSTALL_PREFIX=<install location>
-DRING_XML_INTERFACES_DIR=<daemon dbus interface definitions directory>
-DCMAKE_BUILD_TYPE=<Debug to compile with debug symbols>
-DENABLE_VIDEO=<False to disable video support>
Explanation¶
This script will configure and prepare the compilation and installation of the program and correctly link it against Ring daemon.
All needed files will be built in “build” directory. So you have to go to this directory:
cd build
Then execute the Makefile, to compile the application (src, doc...)
make
Then install it all using:
make install
You have to use “sudo” to be able to install the program in a protected directory (which is the case by default and most of the time). Therefore it will ask for your system password.
OS X Install¶
Install necessary tools:
brew install cmake
brew install qt5
export CMAKE_PREFIX_PATH=<path_to_qt5>
hint: default install location with HomeBrew is /usr/local/Cellar/qt5
First make sure you have built ring daemon for OS X.
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<install_dir_of_daemon> [-DCMAKE_BUILD_TYPE=Debug for compiling with debug symbols]
make install
You can now link and build the OSX client with Ring daemon and LRC library
Internationalization¶
To regenerate strings for translations we use lupdate (within root of the project)
lupdate ./src/ -source-language en -ts translations/lrc_en.ts
Hint: On OSX lupdate is installed with Qt in /usr/local/Cellar/qt5/5.5.0/bin/ when installed with HomeBrew
Just the gnome client (advanced)¶
Requirements¶
- Ring daemon
- libRingClient
- GTK+3 (3.10 or higher)
- Qt5 Core
- X11
- gnome-icon-theme-symbolic (certain icons are used which other themes might be missing)
- libebook1.2 / evolution-data-server (3.10 or higher)
- libnotify (optional, if you wish to receive desktop notifications of incoming calls, etc)
- gettext (optional to compile translations)
On Debian/Ubuntu these can be installed with:
sudo apt-get install g++ cmake libgtk-3-dev qtbase5-dev libclutter-gtk-1.0-dev gnome-icon-theme-symbolic libebook1.2-dev libnotify-dev gettext
On Fedora:
sudo yum install gcc-c++ cmake gtk3-devel qt5-qtbase-devel clutter-gtk-devel gnome-icon-theme-symbolic evolution-data-server-devel libnotify-devel gettext
Compiling¶
Run the following from the project root directory:
mkdir build
cd build
cmake ..
make
The following options are often usefull to append to the cmake line:
-DCMAKE_INSTALL_PREFIX=<install location>
-DLibRingClient_DIR=<path the the installed cmake module of LibRingClient>
-DLibRingClient_PROJECT_DIR=<path to the project folder of LibRingClient>
You can then simply run ./gnome-ring
from the build directory
Installing¶
If you’re building the client for use (rather than testing of packaging), it is recommended that you install it on your system, eg: in ‘/usr’, ‘/usr/local’, or ‘/opt’, depending on your distro’s preference to get full functionality such as desktop integration. In this case you should perform a ‘make install’ after building the client.
Building without installing Ring daemon and libRingClient¶
It is possible to build ring-client-gnome without installing the daemon and libRingClient on your system (eg: in /usr or /usr/local):
- build the daemon
- when building libRingClient, specify the location of the daemon lib in the
cmake options with
-DRING_BUILD_DIR=
, eg:-DRING_BUILD_DIR=/home/user/ring/daemon/src
- to get the proper headers, we still need to
make install
libRingClient, but we don’t have to install it in /usr, so just specify another location for the install prefix in the cmake options, eg:-DCMAKE_INSTALL_PREFIX=/home/user/ringinstall
- compile libRingClient and do ‘make install’, everything will be installed in the dir specified by the prefix
- point the client to the libRingClient cmake module during configuration:
-DLibRingClient_DIR=/home/user/ringinstall/lib/cmake/LibRingClient
Debugging¶
For now, the build type of the client is “Debug” by default, however it is
useful to also have the debug symbols of libRingClient. To do this, specify this
when compiling libRingClient with -DCMAKE_BUILD_TYPE=Debug
in the cmake
options.
Ring release process¶
This page explains the process of making a new Ring release. It can be used as checklist of things to remember when making a new release. It was written to clarify the release process between the Ring dev team and the distribution maintainers.
Release tarball¶
Ring is released in the form of a tarball. They are hosted here:
Tarballs are generated from the integration branch of the ring-project repository with a job on our Jenkins server. They include a copy of all contrib libraries configured in daemon/contrib/src
. If you are a Savoir-faire Linux employee, you may trigger the job from this page.
Naming scheme¶
Tarballs respect the following naming scheme ring_<date>_<number_of_commits>.<commit_id>.tar.gz
where:
- date is the current date, for example 20160422
- number_of_commits represents the number of commits that day
- commit_id is the commit id of the last ring-project commit
Packaging¶
Distribution packaging¶
Distribution packages should be generated from the release tarballs. It is best that distributions exclude as much embedded libraries as possible from the tarballs and use their packaged versions instead.
Debian¶
The Debian package is maintained by Alexandre Viau <aviau@debian.org> as part of the Debian VoIP Team <pkg-voip-maintainers@lists.alioth.debian.org>.
The packaging is maintained using git-buildpackage and can be found in the following Alioth repository:
- git.debian.org:/git/pkg-voip/ring.git
The repository contains a Debian.README file explaining the process of importing a new version. To upload a new version of Ring, manual action is required by Alexandre. If he is unavailable, other members of the Debian VoIP team may do the upload.
Upstream packaging¶
The Ring dev team builds packages for popular Linux distributions. Those packages are built weekly. Instructions on installing the repositories can be found on ring.cx/download.
Stable releases¶
At this moment Ring is still considered in beta and does not support stable releases. This may or may not change when the beta period is over. The most secure and stable version of ring is the tip of the master branch.