
reSIProcate release process
===========================

This document explains the process for building a release of the
reSIProcate software.

Deliverables
------------

The only official deliverable is the tarball, for example,

    resiprocate-1.8.0.tar.gz

As a courtesy to users, a contrib tarball is also produced,
containing some third party code:

    resiprocate-contrib-1.8.0.tar.gz

Building of binary packages (e.g. for Debian, RPM, OpenCSW) is
done after the tarball release.  That is not covered here.

Workspace
---------

Obtain a release branch from the Git repository.

  git clone https://github.com/resiprocate/resiprocate resip-1.8
  cd resip-1.8
  git checkout resiprocate-1.8

Version/tag
-----------

Here we give an example for building the release v1.8.5:

Update version information and tag it:

  vi configure.ac         (update the version and ABIVERSION numbers)

  git add configure.ac
  git commit -m 'release: Update for 1.8.5'
  git tag -s -m 'release: Tag 1.8.5'

  git push                (send changes back to SVN)

Bootstrap
---------

The bootstrap must always be done on the same version of autotools
for consistency.  The currently endorsed version is the autotools
distributed in Debian 8.0 (jessie).  If another version is to be used,
it should be discussed on the mailing list and noted in this document.

  autoreconf --install

Make a tarball
--------------

  build/release-tarball.sh

  * this script will call configure && make dist
  * any previous configure settings will be overridden, so you
    may want to preserve a copy of config.status and config.log
    or just do this operation from a workspace that is independent
    of your normal development workspace

Make the contrib tarball
------------------------

  build/contrib-tarball.sh

Sanity check on tarball
-----------------------

  Extract the tarball to /tmp/some-folder/resiprocate-1.8.5

  cd /tmp/some-folder/resiprocate-1.8.5
  ./configure && make -j 12 check

Distribute the tarball
----------------------

  sha256sum resiprocate-1.8.5.tar.gz

  Upload the tarball to the pre-release section of the web site

  Send a PGP signed email to the developers list announcing that
  a release candidate has been built.  Other developers may test the tarball.

  Include the SHA-256 checksum in the PGP signed email.

Confirm the release
-------------------

  Upload the tarball to the official download page

  Send a PGP signed email to the resip-announce and users lists
  announcing that the release candidate is now an official release.

  Include the SHA-256 checksum in the PGP signed email.


