|
|
## Development cycle
|
|
|
|
|
|
### Different types of builds
|
|
|
|
|
|
Look [here](Building) for basic build instruction
|
|
|
|
|
|
CMake will generate a *CMakeCache.txt* file in the build directory that contains the configuration of the build. Among the configuration variables of interest:
|
|
|
|
|
|
* **CMAKE_BUILD_TYPE**: setting this variable do **Debug** will trigger a debug build.
|
|
|
* **CMAKE_CXX_FLAGS_DEBUG**: this contains the compilation option for debug build. Some of them will have a huge (and bad) impact on performance. Apart from the traditional **-g** option, one can add *when compiling with Intel* a combination of:
|
|
|
* **-D_GLIBCXX_DEBUG** with will enable a lot of runtime checks into the support library, including systematic bound checking for the C++ STL containers.
|
|
|
* **-fp-trap-all=common** with will activate floating point checking, including division by zero. Can
|
|
|
|
|
|
### Trick and Tips
|
|
|
|
|
|
The `tools/dev` directory contains a set of scripts used to help development
|
|
|
* `tools/dev/makeTags.sh`: build a [TAGS table for emacs](https://www.emacswiki.org/emacs/EmacsTags).
|
|
|
|
|
|
#### Fast testing on SLURM based platforms
|
|
|
|
|
|
Running the regression tests (in particular integration tests) can be quite long, scripts have been developed to integrate that process with SLURM, the main one is `tools/dev/slurmTest.sh`. These scripts can not be used directly on a news SLURM based cluster and need to be adapted to the local queue configuration and permission. So far they have been adapted to
|
|
|
* [licallo](https://crimson.oca.eu) with the wrapper `tools/dev/licTest.sh`
|
|
|
* [occigen](https://www.cines.fr/calcul/materiels/occigen/) with the wrapper `tools/dev/occTest.sh`
|
|
|
|
|
|
##### Building and running the tests in one command. We assume there is already a build directory configured:
|
|
|
|
|
|
```
|
|
|
$ cd <blddir>
|
|
|
$ ./tools/dev/licTest.sh -b
|
|
|
```
|
|
|
|
|
|
**If** you are in a purely development phase (no production run going on) you can run the following:
|
|
|
|
|
|
```
|
|
|
$scancel -u $USER && make -j && ./tools/dev/licTest.sh -b
|
|
|
```
|
|
|
|
|
|
it will first cancel all your job, which can be convenient if you're working in many different configurations (debug and release for example) as it free resources. **But it will kill all running jobs.**
|
|
|
|
|
|
At any time during the test, you can interrupt the display (with Control-C) and restart with:
|
|
|
|
|
|
```
|
|
|
$ ./tools/dev/licTrackTest.sh
|
|
|
...
|
|
|
``` |
|
|
\ No newline at end of file |