Making release

This page explains how to prepare BornAgain for release (regular / hotfix):

Regular release

Pre release actions

  • Check fitting examples.
  • Check memory leakages.
  • Create release branch on the main repository:
    git fetch upstream develop && git checkout FETCH_HEAD
    git checkout -b release-M.m.0
    git push upstream release-M.m.0
  • Edit CHANGELOG and VERSION.cmake
  • Build in order to propagate version number and regenerate bindings/pydocs:
    make all
  • Commit all the changes
  • Push to the forked release brunch:
git push origin release-M.m.0
  • Make a pull-request to the upstream release brunch through your GitHub account
  • Make sure that the code is successfully built and tested on all platforms

Making release

  • Make a tarball for linux systems:
    • create an empty directory for the source code
    • clone release brunch of upstream in this directory
    • create a new build directory and make the source package:
      cmake -DCMAKE_BUILD_TYPE=Release <path_to_source>
      make package_source
  • Check tarball:
    mkdir testtarball; cd testtarball
    tar zxf <path_to_tarball>/BornAgain-<version>.tar.gz
    mkdir build; mkdir installed
    cd build; cmake -DCMAKE_INSTALL_PREFIX=../installed ../BornAgain-<version>; make -j8; make check; make install
    cd ../installed/lib/BornAgain-M.m.0; python -c "from libBornAgainCore import *; print GetVersionNumber()" 
  • Check prepared packages for validity (install the code, check if everything works fine)
  • Merge release to develop and push (this will trigger CI builds: verify them)
    git checkout develop
    git merge release-<version>
    git push
  • Create a pull request for upstream/develop
  • Merge release to master and push
    git checkout master
    git merge release-<version>
    git push
  • Create a pull request for upstream/master
  • Create a release on github (with tag vX.xx.x)
  • Remove the release branches of your fork
  • Change and propagate version of develop branch to X.x.99
  • Copy the installers (and manual if needed) to src/BornAgain of apps server and move the old ones to src/BornAgain/old


  • update doxygen documentation
    cd /Local/src/BornAgain
    git pull
    rm -r -f ./html
    cd ./Doc/Doxygen
  • Update of roadmap table in 'Roadmap'
  • Create news on drupal

Add new content "News Item" (Tag: "Release", Release Label:"Release-M.m.x" of h6 size)

Making hotfix

A hotfix is directly applied to the master branch

export V=                # version number <M.m.f> (e.g. 1.2.0)
export S=                # path to BornAgain source directory
alias edit='vi'          # or whatever editor
export $R=hotfix-$V
cd $S
git checkout master
git pull
git checkout -b $R
  • Edit CHANGELOG and VERSION.cmake
  • Modify code which needs to be fixed.
cmake -DBORNAGAIN_RELEASE=ON $S   # to propagate new version number to BAVersion.h and Doxygen
git commit

Enter commit message: "This is hotfix-$V: <explanation of bugfix>"
git checkout master
git merge $R
git push
git tag $V
git push --tags
  • Update tarball on server
    • go to empty directory and clone repository
    • cmake -DBORNAGAIN_GUI=ON ../BornAgain/
    • create tarball with 'make package_source'
    • validate tarball (unpack;
    • scp BornAgain-$V.tar.gz :/www/apps/src/BornAgain/.
  • Build new dmg package and windows installer and copy them to :/www/apps/src/BornAgain/.
  • Follow the 'Administration' section above to update the website.

Further actions

See Releasing the Manual.

BornAgain-1.16.0-python2.7-macosx64-10.10+.dmg (25.8 MB) pospelov, 31 Jul 2019 14:22

BornAgain-1.16.0-python3.6-macosx64-10.10+.dmg (26.1 MB) pospelov, 31 Jul 2019 14:23

BornAgain-1.16.0-python3.7-macosx64-10.10+.dmg (26.2 MB) pospelov, 31 Jul 2019 14:23

BornAgain-1.16.0.tar.gz (11 MB) dmitry, 31 Jul 2019 16:44

BornAgain-1.16.0-python2.7-win64.exe (22.2 MB) dmitry, 31 Jul 2019 16:58

BornAgain-1.16.0-python3.6-win64.exe (22.6 MB) dmitry, 31 Jul 2019 16:58

BornAgain-1.16.0-python3.7-win64.exe (22.6 MB) dmitry, 31 Jul 2019 16:58

gisaxs2019_pospelov.pdf (5.45 MB) pospelov, 20 Nov 2019 08:21