root / doc / devnotes.rst @ ef958f2a
History | View | Annotate | Download (4 kB)
1 |
Developer notes |
---|---|
2 |
=============== |
3 |
|
4 |
Build dependencies |
5 |
------------------ |
6 |
|
7 |
Most dependencies from :doc:`install-quick`, plus (for Python): |
8 |
|
9 |
- `GNU make <http://www.gnu.org/software/make/>`_ |
10 |
- `GNU tar <http://www.gnu.org/software/tar/>`_ |
11 |
- `Gzip <http://www.gnu.org/software/gzip/>`_ |
12 |
- `pandoc <http://johnmacfarlane.net/pandoc/>`_ |
13 |
- `python-sphinx <http://sphinx.pocoo.org/>`_ |
14 |
(tested with version 0.6.1) |
15 |
- `graphviz <http://www.graphviz.org/>`_ |
16 |
- the `en_US.UTF-8` locale must be enabled on the system |
17 |
- `pylint <http://www.logilab.org/857>`_ and its associated |
18 |
dependencies |
19 |
- `pep8 <https://github.com/jcrocholl/pep8/>`_ |
20 |
|
21 |
Note that for pylint, at the current moment the following versions |
22 |
need to be used:: |
23 |
|
24 |
$ pylint --version |
25 |
pylint 0.21.1, |
26 |
astng 0.20.1, common 0.50.3 |
27 |
|
28 |
To generate unittest coverage reports (``make coverage``), `coverage |
29 |
<http://pypi.python.org/pypi/coverage>`_ needs to be installed. |
30 |
|
31 |
For Haskell development, again all things from the quick install |
32 |
document, plus: |
33 |
|
34 |
- `haddock <http://www.haskell.org/haddock/>`_, documentation |
35 |
generator (equivalent to epydoc for Python) |
36 |
- `HsColour <http://hackage.haskell.org/package/hscolour>`_, again |
37 |
used for documentation (it's source-code pretty-printing) |
38 |
- `hlint <http://community.haskell.org/~ndm/hlint/>`_, a source code |
39 |
linter (equivalent to pylint for Python) |
40 |
- the `QuickCheck <http://hackage.haskell.org/package/QuickCheck>`_ |
41 |
library, version 2.x |
42 |
- ``hpc``, which comes with the compiler, so you should already have |
43 |
it |
44 |
|
45 |
Under Debian, these can be installed (on top of the required ones from |
46 |
the quick install document) via:: |
47 |
|
48 |
apt-get install libghc-quickcheck2-dev hscolour hlint |
49 |
|
50 |
|
51 |
Configuring for development |
52 |
--------------------------- |
53 |
|
54 |
.. highlight:: sh |
55 |
|
56 |
Run the following command (only use ``PYTHON=...`` if you need to use a |
57 |
different python version):: |
58 |
|
59 |
./autogen.sh && \ |
60 |
./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var |
61 |
|
62 |
Haskell development notes |
63 |
------------------------- |
64 |
|
65 |
There are a few things which can help writing or debugging the Haskell |
66 |
code. |
67 |
|
68 |
You can run the Haskell linter :command:`hlint` via:: |
69 |
|
70 |
make hlint |
71 |
|
72 |
This is not enabled by default as it gets many false positives, and |
73 |
thus the normal output is not “clean”. The above command will generate |
74 |
both output on the terminal and also a HTML report at |
75 |
``doc/hs-lint.html``. |
76 |
|
77 |
When writing or debugging TemplateHaskell code, it's useful to see |
78 |
what the splices are converted to. This can be done via:: |
79 |
|
80 |
make HEXTRA="-ddump-splices" |
81 |
|
82 |
Due to the way TemplateHaskell works, it's not straightforward to |
83 |
build profiling code. The recommended way is:: |
84 |
|
85 |
make clean |
86 |
make htools/htools HEXTRA="-osuf .o" |
87 |
rm htools/htools |
88 |
make htools/htools HEXTRA="-osuf .prof_o -prof -auto-all" |
89 |
|
90 |
This will build the binary twice, per the TemplateHaskell |
91 |
documentation, the second one with profiling enabled. |
92 |
|
93 |
|
94 |
Packaging notes |
95 |
=============== |
96 |
|
97 |
Ganeti is mostly developped and tested on `Debian |
98 |
<http://www.debian.org/>`_-based distributions, while still keeping |
99 |
adoptability to other Linux distributions in mind. |
100 |
|
101 |
The ``doc/examples/`` directory contains a number of potentially useful |
102 |
scripts and configuration files. Some of them might need adjustment |
103 |
before use. |
104 |
|
105 |
``daemon-util`` |
106 |
--------------- |
107 |
|
108 |
This script, in the source code as ``daemons/daemon-util.in``, is used |
109 |
to start/stop Ganeti and do a few other things related to system |
110 |
daemons. It is recommended to use ``daemon-util`` also from the system's |
111 |
init scripts. That way the code starting and stopping daemons is shared |
112 |
and future changes have to be made in only one place. |
113 |
|
114 |
``daemon-util`` reads extra arguments from variables (``*_ARGS``) in |
115 |
``/etc/default/ganeti``. When modifying ``daemon-util``, keep in mind to |
116 |
not remove support for the ``EXTRA_*_ARGS`` variables for starting |
117 |
daemons. Some parts of Ganeti use them to pass additional arguments when |
118 |
starting a daemon. |
119 |
|
120 |
The ``reload_ssh_keys`` function can be adjusted to use another command |
121 |
for reloading the OpenSSH daemon's host keys. |
122 |
|
123 |
.. vim: set textwidth=72 : |