Skip to content

Developer Guide

Cameron Smith edited this page Sep 22, 2017 · 7 revisions

Contributing

Folks interested in contributing should check out the Issues page. There you should find some easy fixes for anyone with some C/C++ experience. Before making changes take a look at the style guide.

Additional guidelines:

  • Don't break the build
  • If in doubt, make a branch
  • Run the ctest suite - everything must pass
  • Don't try to force push to master or develop; it is disabled

Internal APIs

Developers should refer to this document discussing the APIs and their organization.

How are the branches setup?

The software repository setup is as follows:

  1. Each repository has exactly two branches: master and develop.
  2. All developers can modify the develop branch at will, without restriction.
  3. No developer may directly modify the master branch.
  4. Every day, an automated process will perform regression tests on both branches, and post the results online here.
  5. Every day, an automated process will merge all changes from the develop branch to the master branch if and only if the resulting master regression tests pass.
  6. A select group of Owners may modify master for the limited purposes of repairing the automated system.

The above text was taken from the Automation page.

How does the build-system work?

We use CMake. First, read this page on the CMake build-system. Then, take a look at bob.cmake and one of the CMakeLists.txt files in sub-directory.

Simmetrix

How do we use Simmetrix SimModSuite?

We use SimModSuite mostly for the interface to geometric modeling kernels. In some cases apf-sim is used and there is a much stronger dependency (mesh, fields, etc.).

There is a new version of SimModSuite. How can I build against it?

  1. increase the max version # here: https://github.com/SCOREC/core/blob/ea65d5fb9e9c7915da289c9106d7b9f7b8c26727/cmake/FindSimModSuite.cmake#L77
  2. run make and ensure that there are no additional warnings/errors
  3. run ctest to ensure nothing is broken
  4. push the max version # change