Source Code Repo Layout¶
- conduit/ - Main Conduit library source
- relay/ - Relay libraries source
- blueprint/ - Blueprint library source
- conduit/ - Unit tests for the main Conduit library
- relay/ - Unit tests for Conduit Relay libraries
- blueprint/ - Unit tests for Blueprint library
- thirdparty/ - Unit tests for third party libraries
- src/examples/ - Basic examples related to building and using Conduit
- src/docs/ - Documentation
- src/thirdparty_builtin/ - Third party libraries we build and manage directly
Build System Info¶
Important CMake Targets¶
- make: Builds Conduit.
- make test: Runs unit tests.
- make docs: Builds sphinx and doxygen documentation.
- make install: Installs conduit libraries, headers, and documentation to
Adding a Unit Test¶
- Create a test source file in
- All test source files should have a
t_prefix on their file name to make them easy to identify.
- Add the test to build system by editing
Running Unit Tests via Valgrind¶
We can use ctest’s built-in valgrind support to check for memory leaks in unit tests. Assuming valgrind is automatically detected when you run CMake to configure conduit, you can check for leaks by running:
ctest -D ExperimentalBuild ctest -D ExperimentalMemCheck
The build system is setup to use src/cmake/valgrind.supp to filter memcheck results. We don’t yet have all spurious issues suppressed, expect to see leaks reported for python and mpi tests.
Git Development Workflow¶
Conduit’s primary source repository and issue tracker are hosted on github:
We are using a Github Flow model, which is a simpler variant of the confusingly similar sounding Git Flow model.
Here are the basics:
- Development is done on topic branches off the master.
- Merge to master is only done via a pull request.
- The master should always compile and pass all tests.
- Releases are tagged off of master.
More details on GitHub Flow:
Here are some other rules to abide by:
- If you have write permissions for the Conduit repo, you can merge your own pull requests.
- After completing all intended work on branch, please delete the remote branch after merging to master. (Github has an option to do this after you merge a pull request.)