AirRAC Logo  1.00.0
C++ Simulated Revenue Accounting (RAC) System Library
 All Classes Namespaces Files Functions Variables Typedefs Friends Pages
Make a new release


This document describes briefly the recommended procedure of releasing a new version of AirRAC using a Linux development machine and the SourceForge project site.

The following steps are required to make a release of the distribution package.


Clone locally the full Git project:

cd ~
mkdir -p dev/sim
cd ~/dev/sim
git clone git:// airracgit
cd airracgit
git checkout trunk

Branch creation

Create the branch, on your local clone, corresponding to the new release (say, 0.5.0):

cd ~/dev/sim/airracgit
git checkout trunk
git checkout -b 0.5.0

Update the version in the various build system files, replacing 99.99.99 by the correct version number:

vi CMakeLists.txt

Update the version and add a change-log in the ChangeLog and in the RPM specification files:

vi ChangeLog
vi airrac.spec

Commit and publish the release branch

Commit the new release:

cd ~/dev/sim/airracgit
git add -A
git commit -m "[Release 0.5.0] Release of version 0.5.0."
git push

Update the change-log in the trunk as well

Update the change-log in the ChangeLog and RPM specification files:

cd ~/dev/sim/airracgit
git checkout trunk
vi ChangeLog
vi airrac.spec

Commit the change-logs and publish the trunk (main development branch):

git commit -m "[Doc] Integrated the change-log of the release 0.5.0."
git push

Create distribution packages

Create the distribution packages using the following command:

cd ~/dev/sim/airracgit
git checkout 0.5.0
rm -rf build && mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/home/user/dev/deliveries/airrac-0.5.0 \
make check && make dist

This will configure, compile and check the package. The output packages will be named, for instance, airrac-0.5.0.tar.gz and airrac-0.5.0.tar.bz2.

Generation the RPM packages

Optionally, generate the RPM package (for instance, for Fedora/RedHat):

cd ~/dev/sim/airracgit
git checkout 0.5.0
rm -rf build && mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/home/user/dev/deliveries/airrac-0.5.0 \
make dist

To perform this step, rpm-build, rpmlint and rpmdevtools have to be available on the system.

cp airrac.spec ~/dev/packages/SPECS \
  && cp airrac-0.5.0.tar.bz2 ~/dev/packages/SOURCES
cd ~/dev/packages/SPECS
rpmbuild -ba airrac.spec
rpmlint -i ../SPECS/airrac.spec ../SRPMS/airrac-0.5.0-1.fc15.src.rpm \
  ../RPMS/noarch/airrac-* ../RPMS/i686/airrac-*

Update distributed change log

Update the NEWS and ChangeLog files with appropriate information, including what has changed since the previous release. Then commit and push the changes into the AirRAC's Git repository.

Create the binary package, including the documentation

Create the binary package, which includes HTML and PDF documentation, using the following command:

make package

The output binary package will be named, for instance, airrac-0.5.0-Linux.tar.bz2. That package contains both the HTML and PDF documentation. The binary package contains also the executables and shared libraries, as well as C++ header files, but all of those do not interest us for now.

Upload the files to SourceForge

Upload the distribution and documentation packages to the SourceForge server. Check SourceForge help page on uploading software.

Upload the documentation to SourceForge

In order to update the Web site files, either:

  • synchronise them with rsync and SSH:
    cd ~/dev/sim/airracgit
    git checkout 0.5.0
    rsync -aiv doc/html/ doc/latex/refman.pdf joe,
    where -aiv options mean:
    • -a: archive/mirror mode; equals -rlptgoD (no -H, -A, -X)
    • -v: increase verbosity
    • -i: output a change-summary for all updates
    • Note the trailing slashes (/) at the end of both the source and target directories. It means that the content of the source directory (doc/html), rather than the directory itself, has to be copied into the content of the target directory.
  • or use the SourceForge Shell service.

Make a new post

Send an email on the announcement mailing-list

Finally, you should send an announcement to (see for the archives)