How to Make a New Release
=========================
Updated: 6th May 2003

Main steps
==========

0. Set the new version number in all the .rc files

1.  Get a fresh set of source from CVS

2.  Build the Tarball

2a. Ensure "make dist" worked

3.  Verify the Tarball and get release notes from developers

4.  Make the tarball available on SourceForge

5.  Tag the CVS tree 
6.  Announce the release once the Tarball has become available

7.  Update the Website



0. Set the new version number in all the .rc files and README/INSTALL
---------------------------------------------------------------------

All .rc files have a version="" attribute in the <kpartgui>
element. This version number is checked when the file is read, so that
only the more recent version is taken into account. This is because it
is possible for a user to have its own local version of any rc file,
which normally overrides the installed version, except if the version
number is lower.

Also update the INSTALL and README to latest version number and information.

1. Get a fresh set of course from CVS
-------------------------------------

Development tree versions often get clogged up with extraneous
files that we don't want to ship.  Get the source fresh from CVS
to avoid shipping these files.


2. Building the tarball
-----------------------

These steps are automated in the 'make_distrib' shell-script but
it's advised that you do them manually to reduce the risk of error.

The detailed steps are:

From the top level source dir :

- edit configure.in.in and set the version number on the line AM_INIT_AUTOMAKE
- do 'make -f Makefile.cvs; make clean'

Clone (cp -R) the whole directory tree to another dir, named
rosegarden-$version (for instance, rosegarden-4-0.9).

cd to that new directory and do 'make distclean'

Then rerun 'make -f Makefile.cvs; ./configure'

Then finally run 'make dist'

NOTE : 'make dist' uses the output of `cd $PWD` and will get it wrong
if your CDPATH contains '..'. This causes 'make dist' to fail with a
message like :

---------
automake: /home/glaurent/tmp/rosegarden-0.1.2/rosegarden-0.1.2.am:
`/home/glaurent/tmp/rosegarden-0.1.2/rosegarden-0.1.2.am' does not
exist
---------

in which case the simplest thing to do is to unset CDPATH and restart
'make dist'.

NOTE: if you run 'make dist' without first running 'make distclean'
and 'make -f Makefile.cvs ; ./configure' you'll probably get errors
about missing rules for some targets, like :

---------
make[1]: *** No rule to make target `../sound/libRosegardenSequencer.la', needed by `rosegardensequencer'.  Stop.
make[1]: Leaving directory `/home/glaurent/tmp/rosegarden-0.1.2/sequencer'
make: *** [distdir] Error 1
zsh: exit 2     make dist
---------

The tarball should be built in the new directory, that is at
rosegarden-0.1/rosegarden-0.1.tar.gz in this example.

IMPORTANT : just in case, make sure the various binaries
('gui/rosegarden', 'sequencer/rosegardensequencer') aren't included in
the final tarball.

2a Ensure that make dist worked correctly
-----------------------------------------

Recently we've seen "make dist" building bits of the system that it
shouldn't.  Ensure that the tarball doesn't contain any of the following:

rosegarden/docs/web (has to be currently manually removed anyway)
rosegarden/sound/MidiArts.cc
rosegarden/sequencer/rosegardensequenceriface.kidl
rosegarden/sequencer/rosegardensequenceriface_skel.cpp
rosegarden/gui/rosegardentransport.h
rosegarden/gui/rosegardentransport.cpp
rosegarden/gui/trackseditoriface.kidl
rosegarden/gui/trackseditoriface_skel.cpp
rosegarden/gui/rosegardenguiiface.kidl

Also had no end of problems getting the po/ directory to build up
in the "make dist".

0.9.1 UPDATE - most of these issues are now fixed although there
is still some weirdness with MCOPIDL during "make dist"  Well RWB
is seeing this anyway.




3. Verify the Tarball and get release notes from developers
-----------------------------------------------------------

Upload the tarball to a handy webserver and tell the developers
to download it and try it out.  Also get them to supply you with
a list of what they've done to this release so you can build the
release note.

4. Make the tarball available on SourceForge
--------------------------------------------

Steps are folllows:

- copy the tarball to ftp://upload.sf.net/incoming/ (anon-ftp)
- log on to SourceForge
- go to the 'admin' page of Rosegarden, then to the 'Edit/Release files' page.
  The direct URL should be :
  https://sourceforge.net/project/admin/editpackages.php?group_id=4932

- go to QRS - Quick Release a File

- fill up the form. The package name is 'rosegarden', the release name
  should simply be the version number. For the file name, you're
  offerred a selection among the lists of the files recently uploaded
  (on upload.sf.net). DO NOT select another one than the one you just
  uploaded (yes, you can actually "release" files which have nothing
  to do with the project, and this whole system suck quite a bit).

That's it, the file will be effectively available within the next few
hours (or sometimes within a couple of minutes).

5. Tag the CVS tree
-------------------

From the top-level 'rosegarden' directory :
cvs tag <RELEASE_NAME> .

Note that release names can't contain dots. For instance :

cvs tag RELEASE_V4_R0_8 .


6. Announce the release once the Tarball has become available
-------------------------------------------------------------

Send out the release announcement to as many people as you can
think of:

o rg-devel and rg-user list
o Linux Audio Developers, Linux Audio Announce, Linux Audio Users
o Alsa Developers
o Freshmeat
o apps.kde.com


7. Update the website
---------------------

Modify the web pages from rosegarden/docs/web/site.  Regenerate
the FAQ and upload to:

uk-upload.demon.co.uk

New pics can be uploaded to:

username@rosegarden.sf.net:/home/groups/r/ro/rosegarden/htdocs/screenshots

BTW: IRC channel on irc.freenode.net (#rosegarden)


