Build dependencies
------------------
-Most dependencies from :doc:`install-quick`, plus (for Python):
+Most dependencies from :doc:`install-quick`, including ``qemu-img``
+(marked there as optional) plus (for Python):
- `GNU make <http://www.gnu.org/software/make/>`_
- `GNU tar <http://www.gnu.org/software/tar/>`_
- `Gzip <http://www.gnu.org/software/gzip/>`_
- `pandoc <http://johnmacfarlane.net/pandoc/>`_
+- `python-epydoc <http://epydoc.sourceforge.net/>`_
- `python-sphinx <http://sphinx.pocoo.org/>`_
- (tested with version 0.6.1)
+ (tested with version 1.1.3)
- `graphviz <http://www.graphviz.org/>`_
- the `en_US.UTF-8` locale must be enabled on the system
- `pylint <http://www.logilab.org/857>`_ and its associated
dependencies
- `pep8 <https://github.com/jcrocholl/pep8/>`_
+For older developement (Ganeti < 2.4) ``docbook`` was used instead
+``pandoc``.
+
Note that for pylint, at the current moment the following versions
must be used::
pylint 0.21.1,
astng 0.20.1, common 0.50.3
+The same with pep8, other versions may give you errors::
+
+ $ pep8 --version
+ 1.2
+
To generate unittest coverage reports (``make coverage``), `coverage
<http://pypi.python.org/pypi/coverage>`_ needs to be installed.
+Installation of all dependencies listed here::
+
+ $ apt-get install python-setuptools
+ $ apt-get install pandoc python-epydoc graphviz
+ $ cd / && sudo easy_install \
+ sphinx \
+ logilab-astng==0.20.1 \
+ logilab-common==0.50.3 \
+ pylint==0.21.1 \
+ pep8==1.2 \
+ coverage
+
For Haskell development, again all things from the quick install
document, plus:
above (tested with 1.8.15)
- the `QuickCheck <http://hackage.haskell.org/package/QuickCheck>`_
library, version 2.x
+- the `HUnit <http://hunit.sourceforge.net/>`_ library (tested with
+ 1.2.x)
+- the `test-framework
+ <http://batterseapower.github.com/test-framework/>`_ libraries,
+ tested versions: ``test-framework``: 0.6, ``test-framework-hunit``:
+ 0.2.7, ``test-framework-quickcheck2``: 0.2.12
- ``hpc``, which comes with the compiler, so you should already have
it
- `shelltestrunner <http://joyful.com/shelltestrunner>`_, used for
- running unit-tests
+ running shell-based unit-tests
Under Debian Wheezy or later, these can be installed (on top of the
required ones from the quick install document) via::
- $ apt-get install libghc-quickcheck2-dev hscolour hlint
+ $ apt-get install libghc-quickcheck2-dev libghc-hunit-dev \
+ libghc-test-framework-dev \
+ libghc-test-framework-quickcheck2-dev \
+ libghc-test-framework-hunit-dev \
+ hscolour hlint
Or alternatively via ``cabal``::
- $ cabal install quickcheck hscolour hlint shelltestrunner
+ $ cabal install QuickCheck HUnit \
+ test-framework test-framework-quickcheck2 test-framework-hunit \
+ hscolour hlint shelltestrunner
Configuring for development
This will build the binary twice, per the TemplateHaskell
documentation, the second one with profiling enabled.
+The binary files generated by compilation and the profiling/coverage
+files can "break" tab-completion in the sources; they can be ignored,
+for example, in bash via ``.bashrc``::
+
+ FIGNORE='.o:.hi:.prof_o:.tix'
+
+or in emacs via ``completion-ignored-extensions`` (run ``M-x
+customize-var completion-ignored-extensions``).
+
+Running individual tests
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+When developing code, running the entire test suite can be
+slow. Running individual tests is possible easily for unit-tests, less
+so for shell-tests (but these are faster, so it shouldn't be needed).
+
+For Python tests::
+
+ $ export PYTHONPATH=$PWD
+ $ python ./test/ganeti.%mytest%
+
+For Haskell tests::
+
+ $ make htest/test && ./htest/test -t %pattern%
+
+Where ``pattern`` can be a simple test pattern (e.g. ``comma``,
+matching any test whose name contains ``comma``), a test pattern
+denoting a group (ending with a slash, e.g. ``Utils/``), or more
+complex glob pattern. For more details, see the documentation (on the
+`test-framework homepage
+<http://batterseapower.github.com/test-framework/>`_).
Packaging notes
===============