1
Hacking on Connection Manager
2
*****************************
5
Build tools requirements
6
========================
8
When building and testing directly from the repository it is important to
9
have at least automake version 1.10 or later installed. All modern
10
distributions should default to the latest version, but it seems that
11
Debian's default is still an earlier version:
14
# dpkg -l '*automake*'
17
# apt-get install automake1.10
18
# update-alternatives --config automake
21
Working with the source code repository
22
=======================================
24
The repository contains two extra scripts that accomplish the bootstrap
25
process. One is called "bootstrap" which is the basic scripts that uses the
26
autotools scripts to create the needed files for building and installing.
27
It makes sure to call the right programs depending on the usage of shared or
28
static libraries or translations etc.
30
The second program is called "bootstrap-configure". This program will make
31
sure to properly clean the repository, call the "bootstrap" script and then
32
call configure with proper settings for development. It will use the best
33
options and pass them over to configure. These options normally include
34
the enabling the maintainer mode and the debugging features.
36
So while in a normal source project the call "./configure ..." is used to
37
configure the project with its settings like prefix and extra options. In
38
case of bare repositories call "./bootstrap-configure" and it will bootstrap
39
the repository and calls configure with all the correct options to make
42
In case of preparing for a release with "make distcheck", don't use
43
bootstrap-configure since it could export development specific settings.
45
So the normal steps to checkout, build and install such a repository is
49
# git clone git://git.kernel.org/pub/scm/network/connman/connman.git
53
# ./bootstrap-configure
57
# make install DESTDIR=$PWD/x
67
Remove autogenerated files
68
# make maintainer-clean
71
Running from within the source code repository
72
==============================================
74
When using "./configure --enable-maintainer-mode" the automake scripts will
75
use the plugins directly from within the repository. This removes the need
76
to use "make install" when testing "connmand". The "bootstrap-configure"
77
automatically includes this option.
79
Run daemon in foreground with debugging
80
# sudo ./src/connmand -n -d 'plugins/*'
82
The debugging option -d takes an argument. This argument can be a comma
83
separated list of file names like 'plugins/wifi.c,plugins/ethernet.c' to
84
enable debugs in these files. Simple glob style pattern matching is
85
supported in this list.
87
For production installations or distribution packaging it is important that
88
the "--enable-maintainer-mode" option is NOT used.
90
Some times it is important to restrict the available interfaces. For example
91
in cases where testing happens over a network connection. The "-i" command
92
line switch allows to specify a glob pattern for the interface names.
94
Run daemon for wireless interfaces
95
# sudo ./src/connmand -n -i wlan*
98
Debugging the D-Bus interface during runtime
99
============================================
101
Running the daemon with debugging information in the foreground is quite
102
verbose and sometimes not really helpful. The "monitor-connman" script
103
allows to monitor "PropertyChanged" D-Bus signals from various interfaces.
105
During start of daemon
106
{Manager} [/] Devices = dbus.Array([dbus.ObjectPath('/dev_00_90_CC ...
107
{Device} [/dev_00_90_CC_xx_xx_xx] Powered = 1
108
{Device} [/dev_00_90_CC_xx_xx_xx] Networks = dbus.Array( ...
110
During shutdown of daemon
111
{Device} [/dev_00_90_CC_xx_xx_xx] Networks = dbus.Array( ...
112
{Device} [/dev_00_90_CC_xx_xx_xx] Powered = 0
113
{Manager} [/] Devices = dbus.Array([], ...
115
Every "PropertyChanged" signal will generate a line of output. Some of them
116
can get very complex. The first detail inside "{ ... }" is the interface
117
name (without its service name prefix). The second detail inside "[ ... ]"
118
is the object path. And after that it is followed by a key and value of
119
the property that changed.
122
Generating source code documentation
123
====================================
125
The source code is annotated using the gtk-doc style documentation. This
126
allows an easy way of generating API documentation. The "bootstrap-configure"
127
script will use the "--enable-gtk-doc" configure to enable the generation of
130
To make the gtk-doc process work, the gtk-doc tools need to be installed.
131
Every distribution should provide a package for this, but the naming of the
132
package might be different:
135
# apt-get install gtk-doc-tools
138
# apt-get install gtk-doc-utils
141
# yum install gtk-doc
143
In case "bootstrap-configure" is not used, the manual steps for generating
144
the documentation files are like this:
146
Configuring the repository
147
# ./configure --enable-gtk-doc
149
Generate the documentation
153
# firefox doc/html/index.html