Preface
This document is part of the LiveSupport
project, Copyright © 2004 Media
Development Loan Fund, under the GNU GPL.
- Author: $Author: maroy $
- Version: $Revision: 1.5 $
- Location: $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/doc/release.html,v $
Scope
This document describes the process of releasing a new version of
LiveSupport. Obviously this document is only relevant to people who
have the rights and permissions to make such a release.
Introduction
For all the releases of LiveSupport to remain consistent, it is
preferable to have a repeatable release process, which will be followed
when creating releases. This ensures that no matter who creates the
releases, they will remain similar.
The release process boils down to the following steps:
- getting LiveSupport sources
- checking the distribution script
- creating release tarballs
- testing the tarballs
- creating Debian packages
- tagging the sources
- publishing the tarballs
- announcing the release
Getting LiveSupport sources
It is assumed that the person doing the release has a read/write access
to the LiveSupport version control system. As a first step of the
release process, a fresh copy of the version control repository is
check out, so as to insure that:
- the release contains exactly the files that are in the version
control system
- there are no generated files in the release
To get a fresh copy of the LiveSupport repository, execute the
following in an empty directory:
cvs -z3 -d :ext:<username>@netfinity-5.mdlf.org:/home/cvs checkout -P livesupport
Where <username>
is the user name for accessing the
repository of the person making the release.
Checking the distribution script
It is advisable to check the installation script bin/dist.sh
,
to make sure it refers to up-to-date information from the development
environment.
The most important aspect to check is that the specific versions of
tools mentioned in the distribution script are in sync with the tools
compiled by the master Makefile
under the target tools_setup
.
To check this, compare tool version variables in the two files, e.g. BOOST_VERSION
from Makefile
with boost_version
from bin/dist.sh
.
Make sure to check the versions for all the tools mentioned in these
files. Also check that there are no tools missing from the distribution
script that are mentioned in the master Makefile
.
Creating release tarballs
To create the release tarballs, invoke the distribution script bin/dist.sh
,
with the release version as its single parameter:
./bin/dist.sh --version <ls-version>
This will create two tarballs in the current directory:
livesupport-<ls-version>.tar.bz2
livesupport-libraries-<ls-version>.tar.bz2
Testing the tarballs
Having broken releases is very annoying, thus it is highly recommended
that the release tarballs are tested on a plain vanilla system. To test
the tarballs, follow the procedure described in the LiveSupport installation document.
Do not publish tarballs that have not been tested, or are known to be
broken.
Creating Debian packages
After the source tarballs have been tested, Debian source and binary
packages can be created. To do so, upload the source tarballs to a
Debian system, and do the following:
tar xfj livesupport-<ls-version>.tar.bz2
tar xfj livesupport-libraries-<ls-version>.tar.bz2
cd livesupport-<ls-version>
./bin/createDebianPackages.sh -d .. -v <ls-version> -m "Package Maintainer <maintainer@foo.bar>" -o ..
cd ..
The above command will create the Debain source package files next to
the original source tarballs. The script will generate the following
files, making up the Debian source package:
livesupport_<ls-version>-1.dsc
livesupport_<ls-version>-1.diff.gz
livesupport_<ls-version>.orig.tar.gz
Based on the source packages, the Debian package management system can
build the binaries for the current target platform, provided all the
necessary packages required to build are installed on the system. For a
list of the necessary packages, please consult the debian/control file
in extracted debianized source tree generated below.
Building is best done
in an empty directory as follows:
rm -rf debian_build
mkdir debian_build
cd debian_build
dpkg-source -x ../livesupport_<ls_version>-1.dsc
cd livesupport-<ls-version>
dpkg-buildpackage -rfakeroot
cd ../..
The above commands will result in the following debian packages:
livesupport-libs_<ls-version>-1_<arch>.deb
livesupport-station_<ls-version>-1_<arch>.deb
livesupport-studio_<ls-version>-1_<arch>.deb
Tagging the sources
After the tarballs have been tested, the release can be finalized. As a
first step, the current state of the LiveSupport version control
repository has to be tagged, so that the the very versions in the
release can be retrieved at any later date. To tag the repository,
issue the following command from the LiveSupport checked out source
directory:
cvs tag livesupport_<ls-version>
This will tag the current state of the repository with the tag livesupport_<ls-version>
,
enabling later retrieval of this specific state. Please note that since
CVS does not support dots ('.'
) in tags, the dots in the
version number are replaced by underscore ('_'
) when
tagging. Thus, livesupport-0.9.1
is tagged as livesupport-0_9_1
,
for example.
Publishing the tarballs
To make the release available to the public, the created tarballs have
to be published. This is done by making the files accessible under the
LiveSupport project page on SourceForge: http://sourceforge.net/projects/livesupport
. Currently, only
MDLF support staff have access to publish into this
space, so after creating the tarballs, one should contact them
personally to publish the files.
Announcing the release
For the public to be aware of the new release, it has to be announced.
This is primarily done on the Campware site, but also on other
meta-sites, like freshmeat. In particular, the following announcements
are made:
- Campware.org site.
- Freshmeat.net.
- Press releases/announcements go to:
- NewsForge (http://www.newsforge.com)
- PRweb (http://www.prweb.com)
- MDLF's press person
- LiveSupport developers' list, urging everyone to send it to
friends and contacts
- Other Campware developers' lists on major releases
- Other mailing lists and friendly/relevant organizations