266 lines
10 KiB
HTML
266 lines
10 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
|
|
<title>Campcaster release process documentation</title>
|
|
<meta content="$Author$" name="author">
|
|
</head>
|
|
<body>
|
|
<h1>Preface</h1>
|
|
This document is part of the <a href="http://campcaster.campware.org/">Campcaster</a>
|
|
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
|
|
Development Loan Fund</a>, under the GNU <a
|
|
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
|
|
<ul>
|
|
<li>Author: $Author$</li>
|
|
<li>Version: $Revision$</li>
|
|
<li>Location: $URL$</li>
|
|
</ul>
|
|
|
|
|
|
<h1>Scope</h1>
|
|
This document describes the process of releasing a new version of
|
|
Campcaster. Obviously this document is only relevant to people who
|
|
have the rights and permissions to make such a release.<br>
|
|
|
|
|
|
<h1>Introduction</h1>
|
|
For all the releases of Campcaster 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.<br>
|
|
<br>
|
|
The release process boils down to the following steps:<br>
|
|
<ul>
|
|
<li>getting Campcaster sources</li>
|
|
<li>checking the distribution script</li>
|
|
<li>updating release version and changelog<br>
|
|
</li>
|
|
<li>creating release tarballs</li>
|
|
<li>testing the tarballs</li>
|
|
<li>creating Debian packages<br>
|
|
</li>
|
|
<li>tagging the sources</li>
|
|
<li>publishing the tarballs</li>
|
|
<li>announcing the release<br>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
<h1>Getting Campcaster sources</h1>
|
|
It is assumed that the person doing the release has a read/write access
|
|
to the Campcaster version control system. As a first step of the
|
|
release process, a fresh copy of the version control repository is
|
|
checked out, so as to insure that:<br>
|
|
<ul>
|
|
<li>the release contains exactly the files that are in the version
|
|
control system</li>
|
|
<li>there are no generated files in the release</li>
|
|
</ul>
|
|
To get a fresh copy of the Campcaster repository, execute the
|
|
following in an empty directory:
|
|
<pre><code>svn checkout svn://source.campware.org/campcaster/trunk/campcaster</code><br></pre>
|
|
|
|
|
|
<h1>Checking the distribution script</h1>
|
|
It is advisable to check the installation script <code>bin/dist.sh</code>,
|
|
to make sure it refers to up-to-date information from the development
|
|
environment.<br>
|
|
<br>
|
|
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 <code>Makefile</code> under the target <code>tools_setup</code>.
|
|
To check this, compare tool version variables in the two files, e.g. <code>BOOST_VERSION</code>
|
|
from <code>Makefile</code> with <code>boost_version</code> from <code>bin/dist.sh</code>.
|
|
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 <code>Makefile</code>.<br>
|
|
|
|
|
|
<h1>Updating release version and changelog</h1>
|
|
Updating the release version and maintining a changelog helps people
|
|
track the progress of the project. Also, building binary packages rely
|
|
on this information, in particular debian packages won't build if there
|
|
is a mismatch between the release version and the topmost entry in the
|
|
debian changelog file.<br>
|
|
<br>
|
|
You need to update the version information in the following files:
|
|
<ul>
|
|
<li><code>etc/debian/changelog</code></li>
|
|
<li><code>etc/configure.ac</code></li>
|
|
<li><code>etc/doxygen.config</code></li>
|
|
<li><code>etc/xmlrpc-doxygen.config</code></li>
|
|
<li><code>src/modules/storageServer/var/campcaster_version.php</code></li>
|
|
</ul>
|
|
To update the changelog, edit <code>etc/debian/changelog</code>,
|
|
by inserting a section onto the top of the file:<br>
|
|
<br>
|
|
<pre>campcaster (<version>-1) unstable; urgency=low<br><br> * Changes listed here<br><br> -- <code>Package Maintainer <maintainer@foo.bar></code> <timestamp><br><br></pre>
|
|
You can change the "-1" part (to "-2" or "-0distro1" etc). Note that the
|
|
<code><version></code> string, which will be referred to below,
|
|
is <i>without</i> this extension; the extension will be read from the
|
|
<code>changelog</code> file by the Debian packaging scripts.<br>
|
|
<br>
|
|
The <code><timestamp></code> must be preceeded by two spaces, and must be an RFC
|
|
2822 compliant date string, which is most easily produced by issuing
|
|
the <code>date -R</code> command. Please note that the debian package
|
|
manager is quite picky on the format of the changelog file. See <a
|
|
href="http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog">section
|
|
4.4</a> of the Debian Policy Manual for more details.<br>
|
|
<br>
|
|
Don't forget to commit the changes made to the changelog into Subversion
|
|
before proceeding.<br>
|
|
|
|
|
|
<h1>Creating release tarballs<br>
|
|
</h1>
|
|
To create the release tarballs, invoke the distribution script <code>bin/dist.sh</code>,
|
|
with the release version as its single parameter:<br>
|
|
<br>
|
|
<pre><code>./bin/dist.sh --version <version><br></code></pre>
|
|
<br>
|
|
This will create two tarballs in the parent of the current directory:<br>
|
|
<ul>
|
|
<li><code>campcaster-<version>.tar.bz2</code></li>
|
|
<li><code>campcaster-libraries-<version>.tar.bz2</code></li>
|
|
</ul>
|
|
|
|
|
|
<h1>Testing the tarballs</h1>
|
|
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 Campcaster <a
|
|
href="install.html">installation document</a>.<br>
|
|
<br>
|
|
Do not publish tarballs that have not been tested, or are known to be
|
|
broken.<br>
|
|
|
|
|
|
<h1>Creating Debian packages</h1>
|
|
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, install the packages needed to install Campcaster,
|
|
plus two more needed for the build process: <code>debhelper</code> and
|
|
<code>fakeroot</code>. Then do the following:<br>
|
|
<br>
|
|
<pre>tar xfj campcaster-<version>.tar.bz2
|
|
tar xfj campcaster-libraries-<version>.tar.bz2
|
|
cd campcaster-<version>
|
|
./bin/createDebianPackages.sh -d .. -v <version> -o .. -m "Joe Maintainer <joe@foo.bar>"
|
|
cd ..
|
|
</pre>
|
|
<br>
|
|
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:<br>
|
|
<br>
|
|
<pre>campcaster_<version>-1.dsc
|
|
campcaster_<version>-1.diff.gz
|
|
campcaster_<version>.orig.tar.gz
|
|
</pre>
|
|
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 control file
|
|
in the extracted debianized source tree generated below
|
|
(<code>build/campcaster-<version>/debian/control</code>).<br>
|
|
<br>
|
|
Building is best done in an empty directory as follows:<br>
|
|
<br>
|
|
<pre>rm -rf /opt/campcaster
|
|
rm -rf build
|
|
mkdir build
|
|
cd build
|
|
dpkg-source -x ../campcaster_<version>-1.dsc
|
|
cd campcaster-<version>
|
|
sudo dpkg-buildpackage &> ../build.log
|
|
cd ..
|
|
</pre>
|
|
<!-- "dpkg-buildpackage -rfakeroot" would be better instead of
|
|
"sudo dpkg-buildpackage", but it does not work because of the strange
|
|
-libraries package -->
|
|
The above commands will result in the following debian packages:
|
|
<br>
|
|
<pre>campcaster-libs_<version>-1_<arch>.deb
|
|
campcaster-station_<version>-1_<arch>.deb
|
|
campcaster-studio_<version>-1_<arch>.deb
|
|
</pre>
|
|
|
|
|
|
<h1>Uploading the packages to the Campware repository</h1>
|
|
For users to be able to install the packages using <code>apt-get</code>
|
|
or <code>Synaptic</code> etc., they need to be uploaded to the Campware
|
|
package repository on <code>packages.campware.org</code>.
|
|
|
|
To do this, you need to do the following, as real root (sudo is not enough):
|
|
<ul>
|
|
<li>Copy the three package files to the
|
|
<code>/var/www/ubuntu/packages/hardy/<arch></code> directory
|
|
on <code>packages.campware.org</code>. If the directory contained earlier
|
|
versions of the packages, you can delete those.
|
|
<li>Generate the package listing:
|
|
<pre>cd /var/www/ubuntu
|
|
apt-ftparchive packages packages/hardy/<arch> | gzip -9c > dists/hardy/main/binary-<arch>/Packages.gz</pre>
|
|
</ul>
|
|
For other releases, like intrepid, jaunty, karmic etc. replace 'hardy' accordingly
|
|
everywhere, of course.
|
|
|
|
<h1>Tagging the sources</h1>
|
|
After the tarballs have been tested, the release can be finalized. As a
|
|
first step, the current state of the Campcaster 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:<br>
|
|
<br>
|
|
<pre><code>svn copy svn://source.campware.org/campcaster/trunk \
|
|
svn://source.campware.org/campcaster/tags/campcaster-<version>
|
|
</code></pre>
|
|
<br>
|
|
This will tag the current state of the repository with the tag <code>campcaster-<version></code>,
|
|
enabling later retrieval of this specific state.<br>
|
|
|
|
|
|
<h1>Updating Trac</h1>
|
|
Add the new version number to the Version pull-down menu in Trac by
|
|
executing
|
|
<pre><code>trac-admin /usr/local/trac-projects/campcaster version add <version></code></pre>
|
|
on <code>trac.campware.org</code>.
|
|
|
|
|
|
<h1>Publishing the tarballs</h1>
|
|
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
|
|
Campcaster project page on SourceForge:
|
|
<code>http://sourceforge.net/projects/campcaster</code>.<br>
|
|
|
|
|
|
<h1>Announcing the release</h1>
|
|
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:<br>
|
|
<ul>
|
|
<li>Campware.org site.</li>
|
|
<li>Freshmeat.net.</li>
|
|
<li>Press releases/announcements go to:</li>
|
|
<ul>
|
|
<li>NewsForge (<a class="moz-txt-link-freetext"
|
|
href="http://www.newsforge.com/">http://www.newsforge.com</a>)</li>
|
|
<li> PRweb (<a class="moz-txt-link-freetext"
|
|
href="http://www.prweb.com/">http://www.prweb.com</a>)</li>
|
|
<li>MDLF's press person</li>
|
|
<li> Campcaster developers' list, urging everyone to send it to
|
|
friends and contacts</li>
|
|
<li>Other Campware developers' lists on major releases</li>
|
|
<li> Other mailing lists and friendly/relevant organizations</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
<h1>Other</h1>
|
|
You may want to <a href=repositoryCdHowto.html>create a repository CD</a>,
|
|
too.
|
|
<br><br>
|
|
</body>
|
|
</html>
|