HOWTO-Release
How to make a ScummVM release.
This is work in progress and needs to be completed!
Preparations
- Making the release plan
- Telling people about it, making sure everybody knows what is going on
- Update the lists of files below, adding new engine data files and such
Branching for 1.4.x
- Create a branch for the 1.4.x releases from master, named branch-1-4
git checkout -b branch-1-4 master
- Increase version on branch-1-4 to 1.4.0pre (using
devtools/update-version.pl
; see below), and commitdevtools/update-version.pl 1 4 0 pre
git commit -m "RELEASE: This is 1.4.0pre" -a
- Create annotated tag desc/1.4.0pre on that commit and push
git tag -m "Mark 1.4.0pre" desc/1.4.0pre
git push origin tag desc/1.4.0pre branch-1-4:branch-1-4
- Increase version on master to 1.5.0git, and commit
git checkout master
devtools/update-version.pl 1 5 0 git
git commit -m "RELEASE: This is 1.5.0git" -a
- Create annotated tag desc/1.5.0git on that commit and push
git tag -m "Mark 1.5.0git" desc/1.5.0git
git push origin tag desc/1.5.0git master
- Close the old 1.3 release branch
git tag closed/branch-1-3 remotes/origin/branch-1-3
git push origin tag closed/branch-1-3 :branch-1-3
Testing
- Identify release critical (show stopper) bugs and get people to fix them.
- Identify other important bugs and get people to fix them.
- Get even more people to fix all the other bugs, if possible :-).
- Get people to do lots of testing, possibly by asking for help via a news item.
- Collect all that information (e.g. in the Wiki). See Release Testing
Preparing the source
- You have to update the versions in all relevant files. There is a script,
devtools/update-version.pl
meant to help you with this. It will generate/update the following files:- base/internal_version.h
- dists/macosx/Info.plist
- dists/redhat/scummvm.spec
- dists/scummvm.rc
- Review the following documentation files for version and copyright year updates:
- README
- NEWS
- COPYRIGHT
- Review the following port specific files for version updates:
- backends/platform/gp2x/build/README-GP2X
- backends/platform/gp2x/build/README-GP2X.html
- backends/platform/ps2/READ_PS2.TXT
- backends/platform/psp/README.PSP
- backends/platform/symbian/README
- backends/platform/wince/README-WinCE.txt
- backends/platform/ds/arm9/dist/readme_ds.txt
- Make sure package descriptions are up-to-date:
- dists/redhat/scummvm.spec
- Create MSVC project files in the release branch (for example branch-1-4-0, where the tarballs are created from)
- First of all you need to build the create_project tool by using "make devtools"
- Run create_project with "../.. --msvc-version 8" from dists/msvc8
- Add all the resulting files in dists/msvc8 via "git add *.vcproj *.sln *.vsprops"
- Run create_project with "../.. --msvc-version 9" from dists/msvc9
- Add all the resulting files in dists/msvc9 via "git add *.vcproj *.sln *.vsprops"
- Run create_project with "../.. --msvc-version 10" from dists/msvc10
- Add all the resulting files in dists/msvc10 via "git add *.sln *.vcxproj *.vcxproj.filters *.props"
- git commit -m "DISTS: Add MSVC project files."
- And last but not least don't forget to push the results to our github repo via "git push"
- Make source tarballs, post them in the SF.net FRS.
- There is a script
devtools/dist-scummvm.sh
, which does this automatically. - Make sure that porters have write access to the release folder on FRS:
chmod 775 <folder>
- There is a script
Branching for 1.4.0
- Create a branch for 1.4.0 from branch-1-4, named branch-1-4-0
git checkout -b branch-1-4-0 branch-1-4
- Increase version on branch-1-4-0 to 1.4.0 and commit, push
devtools/update-version.pl 1 4 0
git commit -m "RELEASE: This is 1.4.0" -a
git push origin branch-1-4-0:branch-1-4-0
Binaries
- Get porters to make binaries.
- Porter must follow our filename convention, which goes like this: "scummvm-VERSION-PORT.EXTENSION". For example: "scummvm-1.1.0-macosx.dmg". Do not use special names like "EScummVM" or "ScummVMDS". The only exclusion from this requirement is Debian.
- Porters should pass "--enable-release" to configure in case their port is using the configure/make based build system. If their port is not using the configure/make based build system they should make sure they properly define RELEASE_BUILD when compiling their release binary.
- Here is a list of files porters should include in their release archives:
- AUTHORS
- COPYING
- COPYING.BSD
- COPYING.LGPL
- COPYRIGHT
- NEWS
- README (generic ScummVM one)
- scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
- scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
- translations.dat (from gui/themes directory)
- pred.dic (from dists directory)
- kyra.dat (from dists/engine-data)
- queen.tbl (from dists/engine-data)
- sky.cpt (from dists/engine-data)
- lure.dat (from dists/engine-data)
- drascula.dat (from dists/engine-data)
- teenagent.dat (from dists/engine-data)
- hugo.dat (from dists/engine-data)
- toon.dat (from dists/engine-data)
- your build binary
- your build-specific README (optional)
- ...
- Porters can upload binaries via SCP or SFTP:
scp FILENAME SFNET_USERNAME,scummvm@frs.sourceforge.net:/home/frs/project/s/sc/scummvm/scummvm/X.Y.Z/
- More details on the upload process and the file release system in general: https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download
- Update the website internally (i.e. update the version in the repository), but do not yet put these changes online.
- Edit
include/config.inc.php
to update the global version. - Create a new XML file for the new version in
data/compatibility/
. - Update
data/downloads.xml
. - Add a news item.
- Update default platform packages on sf.net FRS
- Edit
- Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
- -win32.exe as Windows binary
- -macosx.dmg as Mac binary
- .tar.bz2 as Linux, FreeBSD and Other binary
- -solaris-x86.tar.gz as Solaris binary
Tagging 1.4.0
- When 1.4.0 is ready to be announced, make a permanent v1.4.0 tag in git to mark the release, and delete the 1.4.0 branch
git checkout branch-1-4-0
git tag -m "Tag v1.4.0" v1.4.0
git push origin tag v1.4.0
git push origin :branch-1-4-0
- Also increase the version number on the 1.4.x branch to 1.4.1pre
git checkout branch-1-4
devtools/update-version.pl 1 4 1 pre
git commit -m "RELEASE: This is 1.4.1pre" -a
- Create annotated tag desc/1.4.1pre on that commit and push
git tag -m "Mark 1.4.1pre" desc/1.4.1pre
git push origin tag desc/1.4.1pre branch-1-4:branch-1-4
News & Notification
Write a news blurb (or rather multiple to be used in the following). Usually, you want a bit longer one for the website, a list for Versiontracker, something with proper english sentences for Freshmeat, etc....
- Write a news item for our website (also to be used as template for news items on other sites).
- Update / notify various sites:
- Create a SF.net news item
- Freecode
- Post about the release on our forums
- ... more ?
- Put the updated web site online
Updating the wiki
- Update Template:StableVersion. This is used for links to the Compatibility page for the stable version and for the latest stable version info field for each platform.
- Move newly supported engines in the Complete engines in the latest stable version section on the Engines page.
- Add the first release field on the info box of the newly supported engines.
- Update Platforms page if status changed for some of the platforms (e.g. no release for the latest stable version). For these platforms the latest stable version info will also need to be changed if it was using the StableVersion template.
- Update the support field on the info box of the newly supported games. Also change these games from Unsupported Games category to Supported Games category.