This page describes the general procedure for building a new release of Ogre.
Table of contents
Update the version number and documentation:
- Update the OGRE_VERSION_* definitions in OgreMain/include/OgrePrerequisites.h
- Add a new section to Docs/ChangeLog.html and list all the changes since the last release. A good way to generate the base list is to use the hg command line:
Copy to clipboardhg log --template '<li>{desc}</li>\n' -b branch_name -r previous_release_tag: > new_changes
As an example, let's say you're doing the release of v1.7.2, your command would be:Copy to clipboardhg log --template '<li>{desc}</li>\n' -b v1-7 -r v1-7-1: > new_changes
This will generate you a set of HTML list items which you can embed in the <ul></ul> section of the release notes - you'll probably want to tidy up or group some items. - Commit your changes
Update the manual:
If there were manual changes, you need to generate the manual again and commit it. Details on generating the manual can be found in Building the manual.
Tag the release:
- Make sure you're completely up to date with the master repository and have committed the changes above.
- Tag it:
Copy to clipboardhg tag vM-m-p
Where M = major version, m = minor version and p = patch version - Push all your changes to the master
- If for some reason you need to re-tag, you can use the -f option to replace the existing tag, but be aware this may cause confusion if someone else has already seen the previous tag.
Build the source releases:
I use scripts to build these, one on Linux / Mac (it's the same) and one on Windows. In both cases, you call 'makesourcerelease <tag>' to use it.
Linux / Mac
You need Doxygen and Dot (Graphviz) installed.
Copy to clipboard
#!/bin/bash # NOTE: You can set OGRE_RELEASE_CLONE_SOURCE to a local repo if you want to speed things up # This script will re-clone to a local folder for the release tag=$1 if [[ "$tag" == "" ]]; then echo No tag specified exit -1 fi foldername=ogre_src_$tag if [[ "$OGRE_RELEASE_CLONE_SOURCE" == "" ]]; then OGRE_RELEASE_CLONE_SOURCE=http://bitbucket.org/sinbad/ogre fi hg clone -r $tag $OGRE_RELEASE_CLONE_SOURCE $foldername # Build configure pushd $foldername # delete repo, we only want working copy rm -rf .hg # Gen docs cd Docs/src . makedocs.sh # remove unnecessary files cd ../api/html rm -f *.hhk *.hhc *.map *.md5 *.dot *.hhp *.plist *.xml ../*.tmp popd # tarball for Linux rm -f $foldername.tar.bz2 /bin/tar -cvhjf $foldername.tar.bz2 $foldername
Windows
You need Doxygen, Dot (Graphviz) and 7-Zip on your path.
Copy to clipboard
@echo off if "%1" == "" goto paramErr set tag=%1 set foldername=ogre_src_%tag% rem You can set OGRE_RELEASE_CLONE_SOURCE to a local repo if you want to speed things up if "%OGRE_RELEASE_CLONE_SOURCE%" == "" SET OGRE_RELEASE_CLONE_SOURCE=http://bitbucket.org/sinbad/ogre rem Clean down existing snapshot area echo Cleaning up %foldername%... rmdir /S/Q %foldername% rem Clone ogre from local copy (you should make sure this includes the tag) echo Cloning... hg clone -r %tag% %OGRE_RELEASE_CLONE_SOURCE% %foldername% rem Build configure pushd %foldername% rem delete repo, we only want working copy echo Remove repository... rmdir /S/Q .hg rem Gen docs cd Docs\src doxygen html.cfg rem remove unnecessary files cd ..\api\html del /Q/F *.hhk *.hhc *.map *.md5 *.dot *.hhp *.plist ..\*.tmp popd rem Make self-extracting zip del /Q/F %foldername%.exe rem create self-extracting 7zip archive 7z a -r -y -sfx7z.sfx %foldername%.exe %foldername% goto end :paramErr echo You must supply a tag name :end
Build the SDKs
Each platform has a script inside the SDK/ folder for this, together with instructions, please see those for details.
Update website
- Upload the source and SDK releases to Sourceforge
- Edit the downloads page via Wordpress to link to the new files.
- Post an announcement on the News (Wordpress) with a summary in the main section, and the changelog after the break.