How to do a release: Difference between revisions
(Add sections for pre-tarball release prep) |
|||
Line 3: | Line 3: | ||
== Update versions and CHANGES files == | == Update versions and CHANGES files == | ||
Verify all project release versions embedded throughout the source and build system have been updated to appropriate values for the release. For projects that use the autotools, this means checking configure.in/configure.ac for AC_INIT, *LIB_CURRENT, *LIB_REVISION and *LIB_AGE. Depending on the project, there might be a version.h file, vendor or lib version strings embedded in the source somewhere (eg, lib/info.c for libvorbis or lib/internal.h for libtheora) and various other build project files for non-UNIX platforms (eg, macosx/Info.plist). | |||
Changes, additions, improvements, and major bugfixes should be summarized in the CHANGES file. A good way to avoid missing anything is to look through the SVN log since last release and cherrypick the bits that would be of interest to outside developers or project managers. | |||
== Tag in SVN == | == Tag in SVN == |
Revision as of 09:07, 23 June 2009
You made a new release, the world is waiting for it. Here is what to do:
Update versions and CHANGES files
Verify all project release versions embedded throughout the source and build system have been updated to appropriate values for the release. For projects that use the autotools, this means checking configure.in/configure.ac for AC_INIT, *LIB_CURRENT, *LIB_REVISION and *LIB_AGE. Depending on the project, there might be a version.h file, vendor or lib version strings embedded in the source somewhere (eg, lib/info.c for libvorbis or lib/internal.h for libtheora) and various other build project files for non-UNIX platforms (eg, macosx/Info.plist).
Changes, additions, improvements, and major bugfixes should be summarized in the CHANGES file. A good way to avoid missing anything is to look through the SVN log since last release and cherrypick the bits that would be of interest to outside developers or project managers.
Tag in SVN
Prepare a tarball
./autogen.sh make dist
Ideally, offer binaries for the different systems. This is not required, and many packages (such as libvorbis, etc) ship only as source releases. If in doubt, do what previous releases did. If there are no previous releases, libs usually ship as source only, applications tend to offer binaries.
Repository check-in
Check-in your release and the updated checksum files MD5SUMS and SHA1SUMS to
https://svn.xiph.org/releases/YOUR-COMPONENT/
Extending the checksum files is easy on a Unix machine:
md5sum YOUR-FILE >> MD5SUMS sha1sum YOUR-FILE >> SHA1SUMS
Website update
Add downloadable files
After about 30(?) minutes repository changes will be visible on
http://downloads.xiph.org/releases/YOUR-COMPONENT/
immediate mirror update
The mirrorpush is performed by an every-half-hour cron task. If, for some reason, it's important to update the mirrors immediately, the following may be run as root on Motherfish to force-push:
cd /home/mirrorpush; ./update_downloads.sh
The script must be run from the /home/mirrorpush directory.
Update HTML
Downloads page
Then you should update the download section on the Xiph website. In there repository this file is located at
https://svn.xiph.org/websites/xiph.org/downloads/index.shtml.en
News page
New releases of official projects should include an announcement. The same announcement that is sent to the email announcement lists is used as the basis for a 'press release' on the Xiph news/press page. New news entries must be added seperately to the press page and the Xiph front page. Theora-related releases should also be added to the Theora News page.
The various xiph.org web sites must be edited through SVN just like the release download files. The websites can be found under svn.xiph.org/websites/.
immediate HTML update
Website changes are updated by a cron script like the download mirrors. To force an immediate website update, perform the following as root on Motherfish:
cd /var/www; ./update_websites.sh
Announcement
Announce your release where apropriate. This can include
- The various Xiph.Org website news pages; see above.
- Announce
- your blog
- the project's FreshMeat page
- <other suitable places>
It might also be a good idea to notify people maintaining ports of your project.