How to make an MPlayer release ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ === Preparations === * Some weeks before the release - Announce release target date on -dev-eng and #mplayerdev - Ask the developers about big and intrusive pending patches (apply/delay decision) - Ask the DOCS maintainers to commit their final changes, check if all docs are up to date, etc. - Verify man page, remove obsolete options, mention new ones. - Ask translation maintainers to update their help_mp*.h file. - Update the ChangeLog file (according to SVN log), ask other developers to verify their parts, etc. Ask Diego to spellcheck it. - Consult at -dev-eng about unstable parts of the code which should be disabled for the release. Do it also for ffmpeg. - Find a codename for the release * One week before the release - Mail a reminder on -dev-eng list to commit all pending trivial patches and delay dangerous/big/intrusive patches - Create a test tarball (don't use the release version number to avoid confusion later in case someone reports bugs using it) - Ask people on #mplayerdev to test-compile it on different compilers, cpus and os. This is done to avoid last-minute compilation problems at release time. - If needed prepare new binary codec packages - Start writing a newsentry, ask on #mplayerdev about opinions and corrections. - Start updating all the links on download page (do not commit) - Check the status of mirrors, eventually remove dead/unsynced ones - Announce the release on the mplayer-mirrors mailinglist === Release === * Tarball creation and test - Commit pending security fixes (if any) - Update minimum required version in codecs.conf (and codec_cfg.h) - Review ChangeLog, update it with the release date and SVN revision - Create the release tree: - branch HEAD as 1.0pre5 - commit all release-related changes to the branch - version.sh - change all external ffmpeg modules to a fixed revision number - update release.sh script with version number - run release.sh to create the tarball [1] -test it (download to your local machine, extract, compile, run) - compilers: gcc 4, gcc 3, gcc 2.95, mingw, cygwin - architectures: PPC, AMD64, x86 with MMX[2], SSE[2], 3DNow - OS: Linux, BSD, Windows, MacOS X - Repeat the process as much as needed * Release - if needed rebuild the tarball from the branch - copy to FTP: cp MPlayer-0.90rc5.tar.bz2 /home/ftp/MPlayer/releases/ cp ChangeLog-0.90rc5 and update ChangeLog symlink md5sum MPlayer-0.90rc5.tar.bz2 > MPlayer-0.90rc5.tar.bz2.md5 - if needed copy new codec packages to releases/codecs - Create the torrent files and copy them on the server - Commit the webpages: download, news - Test the website for broken links, etc - Update translated versions of dload.html. - Trigger a sync for the mirrors - Send a message to mplayer-announce mailing list. - create a tag in SVN with release name (do it from the branch, not from HEAD) - Add the new release version to bugzilla page. - Update release version in #mplayer topic - Update project page on Freshmeat == Post release tasks == * As soon as ready - Upload and send announce mail for: - Windows build - MacOS X build - rpm packages == Post release cleanup == * Soon after the release - move the older release (two releases older than the current one) to ../OLD_stuff/ dir - remove the old codec packages, except for the latest old version and the ones released with the previous release * Some weeks after the release - move the older (pre)release(s) (except the last one before the current one) to ../OLD_stuff/ dir - remove all the old codec packages (if replaced by newer ones) - remove old torrent files Done. Some final notes and caveats: - The release process is long: just preparing the files, updating web pages, copying everything in the right palce and checking all links takes 2-3 hours - Don't expect everybody to be online at release time. If you need something from other people, get it done in advance. Notes: [1] ***the following steps are done automatically by release.sh script*** - svn checkout the mplayer src tree, it includes parts from FFmpeg - remove the SVN subdirs: find main -name .svn -exec rm -rf {} \; - remove obsolete DOCS translations, help files - replace version.sh with this (change version number too...): ============ #!/bin/sh echo "#define VERSION \"1.0pre5-$1 \"" > version.h ============ - build the HTML docs from XML sources, then clean up: make html-chunked; make releaseclean release the tree: cd .. mv main MPlayer-0.90rc5 tar -cf MPlayer-0.90rc5.tar MPlayer-0.90rc5 bzip2 -9 MPlayer-0.90rc5.tar ***end of part done by release.sh**