Developer notes
===============
+.. highlight:: shell-example
+
Build dependencies
------------------
- `pep8 <https://github.com/jcrocholl/pep8/>`_
Note that for pylint, at the current moment the following versions
-need to be used::
+must be used::
$ pylint --version
pylint 0.21.1,
- `HsColour <http://hackage.haskell.org/package/hscolour>`_, again
used for documentation (it's source-code pretty-printing)
- `hlint <http://community.haskell.org/~ndm/hlint/>`_, a source code
- linter (equivalent to pylint for Python)
+ linter (equivalent to pylint for Python), recommended version 1.8 or
+ above (tested with 1.8.15)
- the `QuickCheck <http://hackage.haskell.org/package/QuickCheck>`_
library, version 2.x
- ``hpc``, which comes with the compiler, so you should already have
it
+- `shelltestrunner <http://joyful.com/shelltestrunner>`_, used for
+ running unit-tests
+
+Under Debian Wheezy or later, these can be installed (on top of the
+required ones from the quick install document) via::
-Under Debian, 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 hscolour hlint
+Or alternatively via ``cabal``::
+
+ $ cabal install quickcheck hscolour hlint shelltestrunner
Configuring for development
---------------------------
-.. highlight:: sh
-
Run the following command (only use ``PYTHON=...`` if you need to use a
different python version)::
- ./autogen.sh && \
- ./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var
+ $ ./autogen.sh && \
+ ./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var
Haskell development notes
-------------------------
You can run the Haskell linter :command:`hlint` via::
- make hlint
+ $ make hlint
-This is not enabled by default as it gets many false positives, and
-thus the normal output is not “clean”. The above command will generate
-both output on the terminal and also a HTML report at
+This is not enabled by default (as the htools component is
+optional). The above command will generate both output on the terminal
+and, if any warnings are found, also an HTML report at
``doc/hs-lint.html``.
When writing or debugging TemplateHaskell code, it's useful to see
what the splices are converted to. This can be done via::
- make HEXTRA="-ddump-splices"
+ $ make HEXTRA="-ddump-splices"
Due to the way TemplateHaskell works, it's not straightforward to
-build profiling code. The recommended way is::
+build profiling code. The recommended way is to run ``make hs-prof``,
+or alternatively the manual sequence is::
- make clean
- make htools/htools HEXTRA="-osuf .o"
- rm htools/htools
- make htools/htools HEXTRA="-osuf .prof_o -prof -auto-all"
+ $ make clean
+ $ make htools/htools HEXTRA="-osuf .o"
+ $ rm htools/htools
+ $ make htools/htools HEXTRA="-osuf .prof_o -prof -auto-all"
This will build the binary twice, per the TemplateHaskell
documentation, the second one with profiling enabled.