Project

General

Profile

Release instructions

Only for developers

This page describes the process/steps for a new software release.

  1. Version number: Decide on the version number; we follow a MAJOR.MINOR.PATCH scheme. See here. I use version 0.6.0 as an example in the rest of the document.
  2. Library version: Update the version number in source:gdp/Makefile.
  3. License update: Make sure that all the source files have the license block set right. We tend to forget this for new files, but a new release is a good time to fix this. See source:adm/update-license.sh
  4. Repository tagging: In order to make it easy to keep track of the exact code for older releases, we use tags that match the version number, e.g. tag r0.6.0.
  5. Compiled packages: Compile the .deb files that we will provide for downloads. (See below)
  6. File upload: Make sure you get all the .deb files, you should have at least 4; 5 if you are also doing a router release. Upload this to the Files module in redmine.
  7. Server upgrades: Make sure you update the code on various services that we are running, the most important being the router and the log-servers.
  8. News item: Post a news item with a brief summary (ideally full Changelog), along with links to the files. DO NOT attach the files to the news item, since the news is world-readable and we are not ready for that yet.

How to make debian packages

In git root, use the following:

  make VER=0.6.0 debian-package

We need to do this for at least 64-bit x86 and ARM platforms, so make sure you have a beaglebone lying around, ideally with the compilation environment setup. You should now have 3 .deb files:

  • gdp-client_0.6.0_amd64.deb: C-library, header files, and various utilities (gcl-create, gdp-writer, gdp-reader, etc). This is architecture dependent, and we do need to include both 64-bit x86 version (for swarmboxes) and ARM version (for beaglebone).
  • python-gdp_0.6.0_all.deb: Python bindings. This is platform independent.
  • gdp-server_0.6.0_amd64.deb: Server binaries. Platform dependent, but we don't really run servers on ARM, so no need to worry about that.