Because of a complex dependency between DAGMC and PyNE the following procedures are recommended for navigating those dependencies for a new release.
DAGMC depends on PyNE only as a submodule from which C++ files are directly incorporated into the build. It may be desirable to perform a patch-level release of DAGMC when any of the C++ files on PyNE change.
PyNE depends on DAGMC as a third-party library that must be installed prior to building PyNE. Changes in DAGMC do not necessarily require updates to PyNE, so may not result in a patch-level release of PyNE.
It is often desirable to perform patch-level releases of PyNE and DAGMC on concert. If so, the following procedure should reduce conflicts in the dependencies.
- The DAGMC source code repository has a tag named stable that points to the same SHA as the newest release.
- The PyNE CI docker images rely on the DAGMC stable source code tag (this was incorporated in PyNE PR #1415)
- Prepare PyNE for release
- Create release candidate (RC) branch in pyne/pyne
- Create a pull request (PR) into the PyNE RC branch in order to
- Change the version number in pyne/pyne_version.py
- Update CHANGELOG.txt
- Merge that PR when approved
- Potentially perform other updates to the RC branch via PRs
- DO NOT MERGE RC branch
- Prepare DAGMC for release
- Create RC branch in svalinn/DAGMC
- Create PR into DAGMC RC branch
- Update PyNE Submodule in DAGMC after all changes are made to PyNE RC branch. The PyNE RC branch is still not merged at this point.
- Update the DAGMC version number in CMakeLists.txt
- Update DAGMC's CHANGELOG.rst
- Merge that PR when approved
- Potentially perform other updates to the RC branch via PRs
- DO NOT MERGE RC branch
Update DAGMC stable tag to future release hash = DAGMC RC branch HEAD
git tag -d stable; git tag stable; git push -f --tags upstream
Manually invoke Github action to rebuild PyNE Docker images. Note that this will automatically build & test PyNE with the updated DAGMC RC that is pointed to by the stable tag
Publish PyNE release - DAGMC depends on a specific hash of PyNE, while PyNE depends on a tag of DAGMC
- Merge PyNE RC branch to develop
- Create release from develop
Update PyNE Submodule in DAGMC after merge of PyNE RC
- Publish the DAGMC release
- Merge DAGMC RC branch to develop
- Create release from develop