MLPACK Release Preparation Guide

There are some things to be done before a release which are easy to forget but shouldn't be forgotten. A simple guide is here:

  1. Ensure all supported configurations compile and the tests work on the build server.
  2. Check the Windows build.
  3. Branch trunk to tags/mlpack-x.y.z/ (using svn cp).
  4. Document new features in HISTORY.txt, and don't forget to include ticket numbers where relevant.
  5. Ensure authors/copyright files are correct in tags/mlpack-x.y.z/.
  6. Modify CMakeLists.txt so the default is DEBUG=OFF and PROFILE=OFF.
  7. Change PROJECT_NUMBER to x.y.z in Doxyfile.
  8. Remove any features which are not meant to be released.
  9. Update src/mlpack/CMakeLists.txt so that VERSION and SOVERSION are right.
  10. Add license to all files.
  11. svn export the tag to a clean directory.
  12. Build the .tar.gz: tar -cvzf mlpack-x.y.z.tar.gz mlpack-x.y.z.
  13. Copy the .tar.gz to
  14. Increment the version on the website index page.
  15. Update history.html on mlpack website with newest changes.
  16. Rebuild documentation for x.y.z and push to
  17. Send announcement to Fastlab list and post announcement on MLOSS.
  18. Start the benchmark build and try to remember to check on it in two weeks (actually, this is probably the first thing you should do, but too late now, right?).
  19. Drink.

Push to distributions


  1. Get git source: fedpkg clone mlpack.
  2. Get new mlpack version: wget
  3. Push tarball to lookaside cache: fedpkg new-sources mlpack-x.y.z.tar.gz.
  4. Update spec file; build locally (rpmbuild -ba mlpack.spec) and make sure everything seems okay. It may be useful to mock build for EPEL (since that can be picky sometimes).
  5. Commit changes; git commit -a.
  6. For each release of Fedora/EPEL, fedpkg switch-branch <release>; git merge master; git push; fedpkg build; fedpkg update.
  7. When the waiting period is over for each update, push to stable (3-7 days for Fedora, 2 weeks for EPEL).

Push new benchmarks to website

We need to rebuild the benchmark reports so that the figure colors are right for the webpage.

  1. Check out the benchmarking system to some directory.
  2. Download massif.tar.gz and benchmark.db from the artifacts of the build server's  completed "benchmark - reports" job
  3. Put benchmark.db in the reports/ folder, and unpack the .mout files from massif.tar.gz into reports/etc/
  4. Modify config.yaml; change chartColor to #000000, topChartColor to #000000, and textColor to #aaaaaa (the same color as the website text).
  5. Run 'make reports' from the base benchmark directory.
  6. Access the created file, reports/index.html, in a browser and take a look to make sure everything is okay.
  7. Save the old benchmark.html on to some different file (for reference).
  8. Copy index.html to and all the support files too.
  9. Use vimdiff to copy changes from benchmark-old.html to benchmark.html. This should include loading another css stylesheet, adding the header and navigation menu to the top of the page, and removing the top graph (because it might be confusing to users who aren't sure what it means).
  10. Change the version in the phrase "This page contains benchmarks for the various algorithms implemented in mlpack x.y.z."