Preparing a new Release        

This page describes the general procedure for building a new release of Ogre.

Update the version number and documentation:

  1. Update the OGRE_VERSION_* definitions in OgreMain/include/OgrePrerequisites.h
  2. 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:
    hg 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:
    hg 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.
  3. 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:

  1. Make sure you're completely up to date with the master repository and have committed the changes above.
  2. Tag it:
    hg tag vM-m-p

    Where M = major version, m = minor version and p = patch version
  3. Push all your changes to the master
  4. 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.

#!/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.

@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

  1. Upload the source and SDK releases to Sourceforge
  2. Edit the downloads page via Wordpress to link to the new files.
  3. Post an announcement on the News (Wordpress) with a summary in the main section, and the changelog after the break.