History: Preparing a new Release
Source of version: 8 (current)
Copy to clipboard
This page describes the general procedure for building a new release of Ogre.
{maketoc}
!! 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:
+{CODE(wrap="1",colors="bash")}
hg log --template '<li>{desc}</li>\n' -b branch_name -r previous_release_tag: > new_changes
{CODE}
+ As an example, let's say you're doing the release of v1.7.2, your command would be:
+{CODE(wrap="1",colors="bash")}
hg log --template '<li>{desc}</li>\n' -b v1-7 -r v1-7-1: > new_changes
{CODE}
+ 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:
+{CODE(wrap="1",colors="bash")}
hg tag vM-m-p
{CODE}
+ 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 '{MONO()}~np~makesourcerelease <tag>~/np~{MONO}' to use it.
!!! Linux / Mac
You need Doxygen and Dot (Graphviz) installed.
{CODE(wrap="1",colors="bash")}
#!/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
{CODE}
!!! Windows
You need Doxygen, Dot (Graphviz) and 7-Zip on your path.
{CODE(wrap="1",colors="winbatch")}
@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
{CODE}
!! 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.