TracNav
Documentation
Build instructions
First, check that you satisfy all the dependencies to compile SFLphone.
Depending the version you downloaded, you will have to compile the external libraries or not.
The external libraries are in the libs directory, excepting the stund and utilspp directories, which are integrated in the daemon build system. But for instance, if you fetched the head of our git repository, you will have to compile the pjsip library first. So:
Go to libs/pjproject-1.0, then:
./configure && make dep && make clean && make sudo make install
Check the INSTALL notes for further information.
Once this is done, we are going to compile the daemon. Go to the root of the repository and:
./autogen.sh --prefix=/usr --with-debug make && sudo make install
Then we are going to compile the GTK+ client. So go to sflphone-gtk directory and, again, the same routine:
./autogen.sh --prefix=/usr --with-debug make && sudo make install
Be sure to configure the daemon and the client in the same directory ( /usr in this example ).
Development branches
There are several development branches in the Git repository. Here are a brief description of each. We were used to work on the stable_release branch and not anymore at all on the master branch, and over time they diverged too significantly to merge them. Moreover, as I already isolated the video work and the contact/presence stuff, the code on the master branch is not very useful; So the master branch contains now the latest development and replaces the stable_release branch.
origin/master
The main development branch. On this branch, you will find the latest stable code. The release packages are build from this branch. The development parts are generally made on annexe branches and the code is merged into the master when this one is done and tested.
origin/contactslist
The contact and presence code has been separated from the video code; This is the work of Guillaume Carmel-Archambault. It implements a persistant contact list based on XML and the possibility to monitor your contacts and check their status (online, on the phone, offline, etc...).
origin/eeepc
Here is a compatible version for the Xandros distribution on the Asus eeepc. The main problem is the GTK widgets compatibility like GtkToolTip or GtkStatusIcon because an old version of GTK is provided by Xandros. This version has been successfully compiled on the eeepc. But some work needs to be done on the audio side. The latest revision of this branch has been merged into the stable one.
origin/freebox
We needed to get compatible with the SIP expiration value the Free server is asking for. The latest revision of this branch has been merged into the stable one.
origin/history_addons
This branch contains all the development done on the call history, included the search bar tool. The latest revision of this branch has been merged into the stable one.
origin/voicemail
We are currently developing an Asterisk module for SFLphone to visually manage the voicemails. Read More ...
origin/pulseaudio
This is the development branch for the native PulseAudio interface. As it is the default sound server in the latest Linux distribution, we felt it was very important to be able to use SFLphone through PA. The next release will provide the user the choice between ALSA and PulseAudio. For instance, one of the great possibility PulseAudio provides is, on an incoming call, to mute the other audio applications.
origin/python-client
Soon available. A python client for sflphoned is being developed. It uses the DBus interfaces.
origin/video
All the video code.
Developer documentation
upcoming
Modules
No module here have been merged into the main trunk yet.
Voicemail
Check here Florian Desportes's work on the voicemail module.
Video call
Here is the work of the Polytechnic School on the video layer.
Contact/presence management
no info yet
Test
To test and use SFLphone, you need to have a SIP or IAX2 account. Here is a list of potential providers :
Feel free to contact us and complete this list if you have had a good experience with other providers.
Register on one of those sites and use your account information during the SFLPhone wizard.
How To git
A very quick tutorial on how to switch branches with Git
When you clone the git repository, you get every branches. By default, you are on the master branch. You can list branches with:
git branch -all
The star indicates the branch you are working on. The branch names beginning with origin/ indicates the remote branches. The other ones are the local branches. To checkout a remote branch, for instance the pulseaudio branch:
git checkout origin/pulseaudio -b <local_branch_name>
The -b option will create a local branch named local_branch_name pointing on the pulseaudio remote branch. If you already created a local branch pointing on this specific remote branch, you only need that line:
git checkout <local_branch_name>
- config file example
You may need to edit your git config file (.git/config) to specified multiple branches behaviour. Here is an example of a config file which deal with several branches of the Git repository:
[remote "origin"]
url = git+ssh://sflphone_org@sflphone.org/git/sflphone.git
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master
push = refs/heads/stable:refs/heads/emilou_release
push = refs/heads/search_bar:refs/heads/release
push = refs/heads/history_addons:refs/heads/history_addons
push = refs/heads/pulseaudio:refs/heads/pulseaudio
push = refs/heads/eeepc:refs/heads/eeepc
push = refs/heads/freebox:refs/heads/freebox
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "history_addons"]
remote = origin
merge = refs/heads/history_addons
[branch "eeepc"]
remote = origin
merge = refs/heads/eeepc
[branch "pulseaudio"]
remote = origin
merge = refs/heads/pulseaudio
How to build a nice patch
The following lines describes a way to nicely build a development patch with git. First retrieve the package source:
apt-get source --download-only sflphone
Then import the source code in a git repository:
git-import-dsc sflphone*.dsc cd sflphone
Now make your modifications and commit them locally:
git-commit -a -m "my patch ... "
Then build the patch with the git-diff command:
git-diff <debian_branch_name> -- > mypatch.patch
Note: <debian_branch_name> corresponds to the debian branch name; it is imported by default by git-import-dsc as the debian version number (for instance debian/0.9.2-2ubuntu3). Refer to git-branch to find out the right name of the branch.
Finally, you can either submit the patch through the ticket system or send it by email (sflphoneteam@…).

