Code Search for Developers
 
 
  

release.html from LiveSupport at Krugle


Show release.html syntax highlighted

<!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: fgerlits $" 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: fgerlits $</li>
  <li>Version: $Revision: 2832 $</li>
  <li>Location: $URL: svn://code.campware.org/livesupport/trunk/campcaster/doc/release.html $</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
exported, 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 export svn://code.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>
</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 (&lt;version&gt;-1) unstable; urgency=low<br><br>  * Changes listed here<br><br> -- <code>Package Maintainer &lt;maintainer@foo.bar&gt;</code>  &lt;timestamp&gt;<br><br></pre>
The timestamp above 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 &lt;version&gt;<br></code></pre>
<br>
This will create two tarballs in the parent of the current directory:<br>
<ul>
  <li><code>campcaster-&lt;version&gt;.tar.bz2</code></li>
  <li><code>campcaster-libraries-&lt;version&gt;.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-&lt;version&gt;.tar.bz2
tar xfj campcaster-libraries-&lt;version&gt;.tar.bz2
cd campcaster-&lt;version&gt;
./bin/createDebianPackages.sh -d .. -v &lt;version&gt; -o .. \
                -m "Package Maintainer &lt;maintainer@foo.bar&gt;"
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_&lt;version&gt;-1.dsc
campcaster_&lt;version&gt;-1.diff.gz
campcaster_&lt;version&gt;.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 debian/control file
in extracted debianized source tree generated below.<br>
Building is best done
in an empty directory as follows:<br>
<br>
<pre>rm -rf /opt/campcaster
rm -rf debian_build
mkdir debian_build
cd debian_build
dpkg-source -x ../campcaster_&lt;ls_version&gt;-1.dsc
cd campcaster-&lt;version&gt;
sudo dpkg-buildpackage
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_&lt;version&gt;-1_&lt;arch&gt;.deb
campcaster-station_&lt;version&gt;-1_&lt;arch&gt;.deb
campcaster-studio_&lt;version&gt;-1_&lt;arch&gt;.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>code.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/&lt;arch&gt;</code> directory
        on <code>code.campware.org</code>.
    <li>Generate the package listing:
<pre>cd /var/www/ubuntu
apt-ftparchive packages packages/&lt;arch&gt; /dev/null | gzip -9c \
        > dists/dapper/main/binary-&lt;arch&gt;/Packages.gz</pre>
</ul>


<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://code.campware.org/campcaster/trunk \
         svn://code.campware.org/campcaster/tags/campcaster-&lt;version&gt;
</code></pre>
<br>
This will tag the current state of the repository with the tag <code>campcaster-&lt;version&gt;</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 &lt;version&gt;</code></pre>
on <code>code.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><span
 style="font-family: monospace;"></span><code></code>. 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.<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>




See more files for this project here

LiveSupport

LiveSupport is a radio playout and automation system. It enables radio stations to automate their broadcasts by using playlists that are scheduled for airing. Playlists can contain music, talk, or even other playlists. A Web interface is included, so radio station personnel can manage the the station's broadcasts remotely.

Project homepage: http://www.campware.org/en/camp/livesupport_news/
Programming language(s): C++,PHP,Shell Script,XML
License: gpl2

  db/
    dbSchema.sql
  developmentEnvironment/
    templates/
      Bar.cxx
      Bar.h
      Makefile
      configure.ac
      htmlDocumentTemplate.html
      phpScriptTemplate.php.txt
      phpScriptTemplate.phps
      shellScriptTemplate.sh
    autoconfConfigureConventions.html
    buildEnvironment.html
    cxxHeaderFileConventions.html
    cxxSourceFileConventions.html
    directoryStructure.html
    fileConventions.html
    htmlFileConventions.html
    index.html
    installation.html
    makefileConventions.html
    phpFileConventions.html
    shellScriptConventions.html
  doxygen/
    .keepme
  gui/
    designs/
      advancedsearch.gif
      editfile.gif
      index.html
      info.gif
      livemode.gif
      login_upload.gif
      playlist_list_view.gif
      playlist_timeline_view.gif
      scheduler_day.gif
      scheduler_week.gif
      simple-browser.gif
      uploadstream.gif
    c_gui_finaltimetable.xls
    htmlPageDescription.rtf
    metadataFields.html
    styleguide.pdf
    tec_doc_t3293_tcm6-10494.pdf
    windowDescription.rtf
  manual/
    LiveSupport Studio manual.sxw
    index.html
    manual_htm_159b8718.jpg
    manual_htm_3098a412.jpg
    manual_htm_4d262ba6.png
    manual_htm_59ef6c7.jpg
    manual_htm_5f12d0a5.jpg
    manual_htm_6e566889.png
    manual_htm_7c768cd8.png
    manual_htm_b09f4d5.jpg
    manual_htm_m3d23fe65.png
    manual_htm_m59d803c0.jpg
    manual_htm_m6e4aac82.jpg
    manual_htm_m75ba079b.png
    manual_htm_m79fcafa8.jpg
  model/
    Authentication/
      Authenticateuser_SequenceDiagram.svg
      Concepts.svg
      EssentialUseCases.svg
      Systembehaviour.svg
      index.html
    LocalStorage/
      Accessplaylist_SequenceDiagram.svg
      Accessrawaudiodata_SequenceDiagram.svg
      Concepts.svg
      Createplaylist_SequenceDiagram.svg
      Deleteaudioclip_SequenceDiagram.svg
      Deleteplaylist_SequenceDiagram.svg
      Editplaylist_SequenceDiagram.svg
      EssentialUseCases.svg
      Searchinmetadata_SequenceDiagram.svg
      Storeorupdateaudioclip_SequenceDiagram.svg
      Systembehaviour.svg
      UpdateAudioclipmetadata_SequenceDiagram.svg
      index.html
    MediaArchive/
      Concepts.svg
      DeleteAudioclip_SequenceDiagram.svg
      Downloadrawaudiodata_SequenceDiagram.svg
      EssentialUseCases.svg
      Searchinmetadata_SequenceDiagram.svg
      StoreorupdateAudioclip_SequenceDiagram.svg
      Systembehaviour.svg
      UpdateAudioclipmetadata_SequenceDiagram.svg
      index.html
    PlaylistEditor/
      AddanAudiocliptoLocalstorage_SequenceDiagram.svg
      AddanAudiocliptoaPlaylist_SequenceDiagram.svg
      AddorupdateanAudiocliptoMediaarchive_SequenceDiagram.svg
      Concepts.svg
      CreateaPlaylist_SequenceDiagram.svg
      DeleteanAudioclipfromLocalstorage_SequenceDiagram.svg
      EditthetransitionofanAudioclip_SequenceDiagram.svg
      EssentialUseCases.svg
      ListentoaPlaylist_SequenceDiagram.svg
      Maintainconfigurationinformation_SequenceDiagram.svg
      MirroranAudioclipfromaremoteMediaarchiveinLocalstorage_SequenceDiagram.svg
      MovethepositionofanAudioclipinaPlaylist_SequenceDiagram.svg
      SearchforAudioclips_SequenceDiagram.svg
      Systembehaviour.svg
      UpdateanAudioclipinLocalstorage_SequenceDiagram.svg
      UploadaPlaylisttoaSchedulerdaemon_SequenceDiagram.svg
      index.html
    Scheduler/
      Concepts.svg
      Createplaylist_SequenceDiagram.svg
      Editplaylist_SequenceDiagram.svg
      EssentialUseCases.svg
      Manageplaylists_SequenceDiagram.svg
      Manageschedule_SequenceDiagram.svg
      Retrieveremotefiles_SequenceDiagram.svg
      Reviewplaylog_SequenceDiagram.svg
      Startstopscheduler_SequenceDiagram.svg
      Systembehaviour.svg
      Uploadplaylists_SequenceDiagram.svg
      index.html
    SoftwareArchitecture/
      PlaylistEditorArchitecture.svg
      SchedulerArchitecture.svg
      SoftwareArchitecture.zuml
      index.html
    Architecture.svg
    LiveSupport.zuml
    index.html
  phpdocs/
  quickstart/
    index.html
    livesupport_logo_blends.png
    outline_clouds.jpg
  developmentTools.html
  gettingStarted.html
  index.html
  install.html
  installUbuntu.html
  ls_pref.html
  preferences.html
  release.html
  repositoryCdHowto.html
  studioLocalization.html
  userLocalizationInstructions.html