Description and how-to for maintenance operations. Some of the maintenance scripts have been moved to the pcmsolvermeta repository

Bump version

Version numbering follows the guidelines of semantic versioning To update, change the relevant field in the file.

Updating Eigen distribution

The C++ linear algebra library Eigen comes bundled with the module. To update the distributed version one has to:

  1. download the desired version of the library to a scratch location. Eigen’s website is:

  2. unpack the downloaded archive;

  3. go into the newly created directory and create a build directory;

  4. go into the newly created build directory and type the following (remember to substitute @PROJECT_SOURCE_DIR@ with the actual path)

    cmake .. -DCMAKE_INSTALL_PREFIX=@PROJECT_SOURCE_DIR@/external/eigen3

Remember to commit and push your modifications.

Release process

We have two repositories one public for the release, hosted on GitHub and one private for the development, hosted on GitLab. At release time the master branch on the private repository is synced to that of the public repository.


This means that WHATEVER is on master at release time is considered ready for release. Protection of functionality happens EXCLUSIVELY by making use of branches/forks on the private repository.

You need to compile the to-be-released code and run the unit test suite. If compilation works and all unit tests are passing then the code is ready to be released:

git push Origin release

Notice that Origin has been spelled with a capital O the reason being that the release branch gets pushed both to the private and the public repositories (trick explanation) In brief, you need to have a .git/config file that resembles the following:

[remote "origin"]
    url =
    fetch = +refs/heads/*:refs/remotes/origin/*
[remote "GitHub"]
    url =
    fetch = +refs/heads/*:refs/remotes/GitHub/*
[remote "Origin"]
    url =
    url =