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: od -x /dev/random | 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. Update and commit extra_files/gwcache.boot. 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://svn.sourceforge.net/svnroot/gtk-gnutella/trunk \ https://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!