Quick Release Guide
====================

[The whole process will take ~1 hour]

Checking steps
--------------

Before releasing, double check that:

* The keys have been updated for the major release, in src/core/token.c,
  with the date (timestamp) listed in the token_keys[] array being accurate.
  Generate new keys with this:

	dd if=/dev/random count=1 | od -x | awk '{
		printf("\t\042%s %s %s %s %s %s %s %s\042,\n",
			      $2,$3,$4,$5,$6,$7,$8,$9) }' | head -n 22


Release steps
-------------

0. Make sure everything is up to date, since we're releasing based on
   local files:

	cd "top directory"
	svn update
	cd extra_files
	make update			# updates bogons.txt and geo-ip.txt

1. Write user summary of changes since last release in ChangeLog.

2. Mark toplevel entry in ChangeLog as being the release:

   # v 0.91   2002-10-19  [stable]

   Highlight of changes (user-visible):

   - Change #1.
   - Change #2...

2a. Update the version number at the top of src/gtk-gnutella.man

   Check the man-page to see if there are no user-visible changes such
   as command line options that must be described there.

3. Edit src/common.h and setup for the release:

   #define GTA_REVISION "stable"
   #define GTA_REVCHAR ""
   #define GTA_RELEASE "2002-10-19"

4. Commit ChangeLog and src/common.h with comment:

	"Release 0.91 stable."

5. Update and commit debian/changelog. Generate the timestamp as follows:

	LC_ALL=C date +'%a, %e %b %Y %H:%M:%S %z'

6. Drink a coffee.

7. From the "top directory", run:

	svn diff > ~/tmp/xxx

   Look at the ~/tmp/xxx file to see whether there are still uncommitted
   changes that require to be checked-in before the release is made.
   Commit them if needed.

8. Tag whole SVN:

	cd "top directory"
	svn copy \
	  https://gtk-gnutella.svn.sourceforge.net/svnroot/gtk-gnutella/trunk \
	  https://gtk-gnutella.svn.sourceforge.net/svnroot/gtk-gnutella/tags/V-0-91

9. Make a clean distribution package:

	cd "top directory"
	makedist -q -c gtk-gnutella-0.92.1

   This will generate a directory gtk-gnutella-0.92.1

10. Create the tar.bz2

	tar -cvf gtk-gnutella-0.92.1.tar gtk-gnutella-0.92.1
	bzip2 -v9 gtk-gnutella-0.92.1.tar

11. Move into the directory.

	cd gtk-gnutella-0.92.1

12. Build the debian package:

	fakeroot debian/rules binary

	This will generate file ../gtk-gnutella_0.92.1-0_i386.deb

13. Convert the file to an RPM package, keeping the same version number:

	cd ..
	fakeroot alien --to-rpm --keep-version gtk-gnutella_0.91.0-0_i386.deb

	This will generate file gtk-gnutella-0.91.0-0.i386.rpm

14. Upload the files to sourceforge.

	ftp upload.sf.net
	ftp> cd incoming
	ftp> binary
	ftp> passive
	ftp> put gtk-gnutella-0.91.tar.bz2
	ftp> put gtk-gnutella_0.91.0-0_i386.deb
	ftp> put gtk-gnutella-0.91.0-0.i386.rpm
	ftp> quit

15. Login to www.sf.net and go to the Admin section of the gtk-gnutella
    project.

16. Go to "File Releases"

17. Go to "Add Release" in package gtk-gnutella and create a release "0.91".

18. Paste the ChangeLog high-level summary, and tick "preserve my
    pre-formatted text", then click "Submit/Refresh".

19. Select the 3 files we uploaded earlier and press "Add files".

20. For each file, set the proper processor release type and file type,
    being sure to "Update/Refresh" each change separately.

	(source is "Platform-Independent"/"Source.bz2" and the others are
	"i386"/".deb" and "i386"/".rpm".

21. Once all is set, click on "I'm sure" and "Send notice".

22. Go back to the Admin section, "Edit/Add Releases" section.

23. Choose "Edit Release" of "gtk-gnutella".

24. Choose the previous release number and click on "Edit release".

25. Change status to "Hidden" and "Submit/Refresh".

26. Go back to the Summary page of the project and click on "View ALL
    project files".  Make sure only the latest release is available.

26a. Go back to the Summary page and check if the project details are
     still up-to-date. In particular check the set of languages
     available in the distribution against the listing with:

	 cat po/*.po|grep 'Language-Team:'|sort

27. Update sourceforge's website: Create a news entry in htdocs/files/en using 
    news_template as a guide and submit it.

28. Change the VERSION file in htdocs/files to update the version number.

	VERSION=0.91

29. Manually update the web site by logging in to projects.sourceforge.net via
    SSH:

	ssh USER@projects.sourceforge.net \
		"cd /home/groups/g/gt/gtk-gnutella && ./update_homepage.sh"

30. Send a message to gtk-gnutella-announce telling about the release
    using Announce-template.txt

31. That's all folks!

