1. Tools Used for CELESTE Development¶
1.1. Source Code Management¶
- git
- CELESTE uses git as the version control system. Currently, it is
hosted on Bitbucket.
Instructions for setting up git for CELESTE can be found in the project
README Other basic tutorial material for
git
can be found on the web. - Gerrit [FUTURE]
- All code changes should go through a code review system. Currently this role is fulfilled by BitBucket, but BitBucket is not flexible enough to handle stringent code reviews.
- Jenkins [FUTURE]
- All changes pushed to Gerrit are automatically compiled and otherwise checked on various platforms using a continuous integration system [to be determined].
- Redmine [FUTURE]
- Bugs and issues, as well as some random features and discussions, are tracked at http://redmine.gromacs.org.
1.2. Build System¶
- CMake
- CMake is our main tool used in the build system.
- CPack
- [FUTURE] Main tool used to package installers
- CTest
- [FUTURE] Main tool used to package installers
- Docker
- [FUTURE] Use a docker host to dynamically provision a slave, run a single build+test in isolation, then tear-down that slave.
1.3. Code Analysis and Formatting¶
- cppcheck
- [FUTURE]
- clang static analyzer
- [FUTURE]
- clang-format
- [WRITEME]
- include-what-you-use
- [FUTURE]
1.4. Documentation Generation¶
1.4.1. Building the CELESTE documentation¶
For now, there are multiple components, formats and tools for the CELESTE documentation, which is aimed primarily at version-specific deployment of the complete documentation on the website.
This is quite complex, because the dependencies for building the documentation must not get in the way of building the code (particularly when cross-compiling), and yet the code must build and run in order for some documentation to be generated. Also, man page documentation (and command-line completions) must be built from the wrapper binary, in order to be bundled into the tarball.
The outputs of interest to most developers are generally produced in the
docs/html/
subdirectory of the build tree.
The following make targets are the most useful:
manpage
- Makes man pages from the RST files with Sphinx
html
- Makes html pages from the RST files with Sphinx
doxygen
- Makes the code documentation with Doxygen
- Doxygen
- Doxygen is used to extract documentation from source code comments.
- graphviz (dot)
- The Doxygen documentation uses
dot
from graphviz for building some graphs. The tool is not mandatory, but the Doxygen build will produce warnings if it is not available, and the graphs are omitted from the documentation. - mscgen
- The Doxygen documentation uses mscgen for building some graphs. As with
dot
, the tool is not mandatory, but not having it available will result in warnings and missing graphs. - Doxygen issue checker
- [FUTURE]
- module dependency graphs
- [FUTURE]
- Sphinx
- Sphinx; at least version 1.2.3) is used for building some parts of the documentation from reStructuredText source files.
- LaTeX
- Also requires ImageMagick for converting graphics file formats.
- linkchecker
- [FUTURE]