Difference between revisions of "HOWTO-Release"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (→‎Binaries: Add toon.dat and hugo.dat)
(Correct instructions)
(74 intermediate revisions by 13 users not shown)
Line 2: Line 2:


''This is work in progress and needs to be completed!''
''This is work in progress and needs to be completed!''
All examples are based on 1.7 and 1.7.0 version. Don't forget to adapt with the adequate version.




=== Preparations ===
=== Preparations ===
* Making the release plan
* Make the release plan, normally 1-2 weeks before branching, 3-4 weeks for bug fixing, 2 weeks after tagging before the release
* Telling people about it, making sure everybody knows what is going on
** e-mail -devel with the proposed schedule, ask if someone would like to finish some functionality
** Look through all the open issues on the bugtracker and identify release blockers and nice-to-have-fixed bugs
* Update the lists of files below, adding new engine data files and such
* Update the lists of files below, adding new engine data files and such
* If some games must be fixed before the release, identify those and create a list at [[Release Testing]]
* Announce the testing period on the main website and copy to the forums and FB
=== During the release cycle ===
* E-mail the scummvm-devel list at least weekly with the list of release blockers and nice-to-have-fixed bugs
* Track daily testing progress and update Wiki if applicable. Normally, we collect playtests on the forums
* Watch for any potential blockers and pat developers who own the identified blockers
* Squash as many bugs as possible
=== Branching for major release ===
* Create a branch for the 2.2.x releases from master, named branch-2-2
** <code>git checkout -b branch-2-2 master</code>
* Increase version on branch-2-2 to 2.2.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
** <code>devtools/update-version.pl 2 2 0 pre</code>
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
* Create annotated tag desc/2.2.0pre on that commit and push
** <code>git tag -m "Mark 2.2.0pre" desc/2.2.0pre</code>
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
* Increase version on master to 2.3.0git, and commit
** <code>git checkout master</code>
** <code>devtools/update-version.pl 2 3 0 git</code>
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
* Create annotated tag desc/2.3.0git on that commit and push
** <code>git tag -m "Mark 2.3.0git" desc/2.3.0git</code>
** <code>git push origin tag desc/2.3.0git master</code>
* Update buildbot
** Edit at the end of [https://github.com/scummvm/dockerized-bb/blob/master/buildbot-config/builds.py builds.py] the line starting with <code>builds.append(ScummVMStableBuild("stable",</code>.
** Remove the customizations in <code>class ScummVMStableBuild</code> if there were any to make the code inherit from ScummVMBuild without any difference.
** Edit the file [https://github.com/scummvm/dockerized-bb/blob/master/buildbot-config/platforms.py platforms.py] and remove all specific rules mentioning <code>ScummVMStableBuild</code>
** Update the code on the server and reload the buildbot as described [[Buildbot#Administration_on_server|here]]
** Remove the old snapshots: <code> rm /home/buildbot/dockerized-bb/buildbot-data/packages/snapshots/stable/*</code>
** Login on Buildbot, force a build of fetch-stable with cleaning and packaging to create packages for the new stable.
* Communication
** Update IRC and Discord channel description
** Write a mail to scummvm-devel


=== Testing ===
=== Testing ===
* Ensure ADGF_TESTING/ADGF_UNSTABLE flags are correct for the release.
* Identify release critical (show stopper) bugs and get people to fix them.
* Identify release critical (show stopper) bugs and get people to fix them.
* Identify other important bugs and get people to fix them.
* Identify other important bugs and get people to fix them.
Line 15: Line 54:
* Get people to do lots of testing, possibly by asking for help via a news item.
* 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]]
* Collect all that information (e.g. in the Wiki). See [[Release Testing]]
=== Branching ===
* Create a branch for the release, named branch-1-3-0 (TODO: Document the exact procedure)
* Update version numbers on master (to 1.4.0git) and branch (to 1.3.0pre) (TODO: Document the exact procedure; also see below)
* Create desc/* git tags for the new git/pre versions, by doing:
** git tag -m "Mark 1.4.0git" desc/1.4.0git 204a9c2e
** git push origin tag desc/1.4.0git
** git tag -m "Mark 1.3.0pre" desc/1.3.0pre 40df14a7
** git push origin tag desc/1.3.0pre


=== Preparing the source ===
=== Preparing the source ===
* You have to update the versions in all relevant files. There is a script, <code>tools/update-version.pl</code> meant to help you with this.  It will generate/update the following files:
* Browse 'git log' since the previous release and add all significant changes to the NEWS file
* Make sure the translations.dat file is up to date. This file is automatically generated once per week (on Monday morning) and may need to be updated manually if changes to the translations occurred since the last Monday. Use ''make translations-dat'' to update the file (and then commit it if it was changed).
* You have to update the versions in all relevant files. There is a script, <code>devtools/update-version.pl</code> meant to help you with this.  It will generate/update the following files:
** base/internal_version.h
** base/internal_version.h
** dists/macosx/Info.plist
** dists/macosx/Info.plist
Line 32: Line 64:
** dists/scummvm.rc
** dists/scummvm.rc
* Review the following documentation files for version and copyright year updates:
* Review the following documentation files for version and copyright year updates:
** README
** README(.md)
** NEWS
** NEWS(.md)
** COPYRIGHT
** COPYRIGHT
*Make sure ADGF_TESTING flag is cleared on all games.
* Review the following port specific files for version updates:
* Review the following port specific files for version updates:
** backends/platform/gp2x/build/README-GP2X
** backends/platform/ps2/README.PS2
** backends/platform/gp2x/build/README-GP2X.html
** backends/platform/ps2/READ_PS2.TXT
** backends/platform/psp/README.PSP
** backends/platform/psp/README.PSP
** backends/platform/symbian/README
** backends/platform/symbian/README
** backends/platform/wince/README-WinCE.txt
** backends/platform/wince/README-WinCE.txt
** backends/platform/ds/arm9/dist/readme_ds.txt
** backends/platform/ds/arm9/dist/readme_ds.txt
** dists/win32/ScummVM.iss (AppVerName)
* Review the release dates in the following port specific files:
** dists/win32/scummvm.gdf.xml
* Make sure package descriptions are up-to-date:
* Make sure package descriptions are up-to-date:
** dists/redhat/scummvm.spec
** dists/redhat/scummvm.spec
* Create MSVC project files
* Create MSVC project files in the release branch (for example branch-1-7-0, where the tarballs are created from)
** First of all you need to build the create_msvc tool by using "make tools"
** make ideprojects
** Run create_msvc with "../.. --msvc-version 8" from dists/msvc8
** git commit -m "DISTS: Generated Code::Blocks and MSVC project files"
** Run create_msvc with "../.. --msvc-version 9" from dists/msvc9
** And last but not least don't forget to push the results to our github repo via "git push"
** Run create_msvc with "../.. --msvc-version 10" from dists/msvc10
* Make source tarballs, put them in the FRS directory.
** Add all *.vcproj, *.sln, *.vsprops, *.vcxproj, *.vcxproj.filters, *.props files to the release tag in SVN
** There is a script <code>devtools/dist-scummvm.sh</code>, which creates them automatically.
* Make source tarballs, post them in the SF.net FRS.
** There is a script <code>tools/dist-scummvm.sh</code>, which does this automatically.
** Make sure that porters have write access to the release folder on FRS: <code>chmod 775 <folder></code>
** Make sure that porters have write access to the release folder on FRS: <code>chmod 775 <folder></code>
* Add version to dists/macosx/scummvm_appcast.xml
=== Branching for minor releases ===
* Create a branch for 1.7.0 from branch-1-7, named branch-1-7-0
** <code>git checkout -b branch-1-7-0 branch-1-7</code>
* Increase version on branch-1-7-0 to 1.7.0 and commit, push
** <code>devtools/update-version.pl 1 7 0</code>
** Manually edit backends/platform/maemo/debian/changelog to reflect correct release date for 1.7.0 entry
** <code>git commit -m "RELEASE: This is 1.7.0" -a</code>
** <code>git push origin branch-1-7-0:branch-1-7-0</code>


=== Binaries ===
=== Binaries ===
* Get porters to make 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.
** 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.
** 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. It is also noteworthy that "--disable-debug" should be passed in order to remove debugging information from the binary.
** Here is a list of files porters should include in their release archives:
** Here is a list of files porters should include in their release archives:
*** AUTHORS
*** AUTHORS
*** COPYING
*** COPYING
*** COPYING.BSD
*** COPYING.BSD
*** COPYING.FREEFONT
*** COPYING.LGPL
*** COPYING.LGPL
*** COPYING.OFL
*** COPYRIGHT
*** COPYRIGHT
*** NEWS
*** NEWS(.md)
*** README (generic ScummVM one)
*** README(.md) (generic ScummVM one)
*** localized NEWS and README files (from doc/) (optional)
*** scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
*** scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
*** scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
*** scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
*** scummremastered.zip (from gui/themes directory) (if your port uses new GUI)
*** translations.dat (from gui/themes directory)
*** translations.dat (from gui/themes directory)
*** pred.dic (from dists directory)
*** pred.dic (from dists directory)
*** access.dat (from dists/engine-data)
*** access.dat (from dists/engine-data)
*** cryomni3d.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** fonts.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
*** lure.dat (from dists/engine-data)
*** mort.dat (from dists/engine-data)
*** neverhood.dat (from dists/engine-data)
*** queen.tbl (from dists/engine-data)
*** queen.tbl (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** lure.dat (from dists/engine-data)
*** supernova.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** titanic.dat (from dists/engine-data)
*** tony.dat (from dists/engine-data)
*** toon.dat (from dists/engine-data)
*** toon.dat (from dists/engine-data)
*** ultima.dat (from dists/engine-data)
*** wintermute.zip (from dists/engine-data)
*** xeen.ccs (from dists/engine-data)
*** your build binary
*** your build binary
*** your build-specific README (optional)
*** your build-specific README (optional)
*** ...
*** ...
* Porters can upload binaries via SCP or SFTP: <code>scp FILENAME SFNET_USERNAME,scummvm@frs.sourceforge.net:/home/pfs/project/s/sc/scummvm/scummvm/X.Y.Z/</code>
* Porters need to upload binaries at some service and then send the link to the team member managing the release (this should be detailed in the email sent to porters with the links to the tarballs).
** 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.
* Update the website internally (i.e. update the version in the repository), but do not yet put these changes online.
** Edit <code>include/config.inc.php</code> to update the global version.
** Edit <code>include/config.inc.php</code> to update the global version.
Line 89: Line 147:
** Update <code>data/downloads.xml</code>.
** Update <code>data/downloads.xml</code>.
** Add a news item.
** Add a news item.
** Update default platform packages on sf.net FRS
** Sparkle automatic updates
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
**** Translate it to ReleaseNotes.html with https://markdowntohtml.com/
*** Sign the macOS and Win32 binaries with our private key for Sparkle
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
*** Copy the app cast file on the website as appcasts/macosx/release.xml
** Copy over the release files to FRS
*** 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 a version ===
* When 1.7.0 is ready to be announced, make a permanent v1.7.0 tag in git to mark the release
** <code>git checkout branch-1-7-0</code>
** <code>git tag -m "Tag v1.7.0" v1.7.0</code>
** <code>git push origin tag v1.7.0</code>
* Also increase the version number on the 1.7.x branch to 1.7.1pre
** <code>git checkout branch-1-7</code>
** <code>devtools/update-version.pl 1 7 1 pre</code>
** <code>git commit -m "RELEASE: This is 1.7.1pre" -a</code>
* Create annotated tag desc/1.7.1pre on that commit and push
** <code>git tag -m "Mark 1.7.1pre" desc/1.7.1pre</code>
** <code>git push origin tag desc/1.7.1pre branch-1-7:branch-1-7</code>
*Add this doc to the Read The Doc admin settings to generate the documentation for this version.
 
=== Creating source tarballs ===
Then you need to create and upload the tarballs.
 
<syntaxhighlight lang="bash">
devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0
</syntaxhighlight>
 
Then upload the resulting scummvm-1.9.0.tar.gz, scummvm-1.9.0.tar.bz2, scummvm-1.9.0.tar.xz and scummvm-1.9.0.tar.zip to the FRS.
 
 
=== Signing binaries ===
Put tarballs into directory <tt>archives/</tt>, run:
<syntaxhighlight lang="bash">
bin/generate_appcast archives/
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-win32.exe dsa_priv.pem
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-macosx.dmg dsa_priv.pem
</syntaxhighlight>
 
The first line will generate file <tt>archives/release.xml</tt>. The following ones will just spit out DSA signatures.
 
Copy/paste signatures to <tt>dists/macosx/scummvm_appcast.xml</tt> in the main git repo.
 
Then run:
<syntaxhighlight lang="bash">
make publish-appcast
cd ../scummvm-web
git commit -m 'WEB: Sync appcast' -a
</syntaxhighlight>


=== News & Notification ===
=== 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 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).
* Write a news item for our website (also to be used as a template for news items on other sites).
* Update / notify various sites:
** Create <tt>data/compatibility/compat-2.1.1.xml</tt>
** Create a SF.net news item (Fingolfin, Sev, ...)
** Update <tt>data/downloads.xml</tt> file
** [http://freshmeat.net/ Freshmeat] (Fingolfin, Sev ... but anybody can do it)
** Change version constants in <tt>include/Constants.php</tt>
** [http://www.versiontracker.com Versiontracker.com] (Fingolfin)
** Make sure Sparkle cast is updated (see [[#Signing binaries]])
** Update [http://www.heise.de/software/ heise software directory] (Fingolfin)
* Update / notify various sites:  
** Post about the release on our forums
** Post about the release on our forums
** ... more ?
** Post about the release on Facebook
* Put the updated web site online
* Put the updated web site online
* Update IRC and Discord channel topics


=== Updating the wiki ===
=== Updating the wiki ===
Line 109: Line 223:
* Add the first release field on the info box of the newly supported engines.
* 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 [[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 remove these games from ''Unsupported Games'' category.
* Set the ''First Official Version'' field for new platforms.
* 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.

Revision as of 21:28, 28 August 2021

How to make a ScummVM release.

This is work in progress and needs to be completed!

All examples are based on 1.7 and 1.7.0 version. Don't forget to adapt with the adequate version.


Preparations

  • Make the release plan, normally 1-2 weeks before branching, 3-4 weeks for bug fixing, 2 weeks after tagging before the release
    • e-mail -devel with the proposed schedule, ask if someone would like to finish some functionality
    • Look through all the open issues on the bugtracker and identify release blockers and nice-to-have-fixed bugs
  • Update the lists of files below, adding new engine data files and such
  • If some games must be fixed before the release, identify those and create a list at Release Testing
  • Announce the testing period on the main website and copy to the forums and FB

During the release cycle

  • E-mail the scummvm-devel list at least weekly with the list of release blockers and nice-to-have-fixed bugs
  • Track daily testing progress and update Wiki if applicable. Normally, we collect playtests on the forums
  • Watch for any potential blockers and pat developers who own the identified blockers
  • Squash as many bugs as possible

Branching for major release

  • Create a branch for the 2.2.x releases from master, named branch-2-2
    • git checkout -b branch-2-2 master
  • Increase version on branch-2-2 to 2.2.0pre (using devtools/update-version.pl; see below), and commit
    • devtools/update-version.pl 2 2 0 pre
    • git commit -m "RELEASE: This is 2.2.0pre" -a
  • Create annotated tag desc/2.2.0pre on that commit and push
    • git tag -m "Mark 2.2.0pre" desc/2.2.0pre
    • git push origin tag desc/2.2.0pre branch-2-2:branch-2-2
  • Increase version on master to 2.3.0git, and commit
    • git checkout master
    • devtools/update-version.pl 2 3 0 git
    • git commit -m "RELEASE: This is 2.3.0git" -a
  • Create annotated tag desc/2.3.0git on that commit and push
    • git tag -m "Mark 2.3.0git" desc/2.3.0git
    • git push origin tag desc/2.3.0git master
  • Update buildbot
    • Edit at the end of builds.py the line starting with builds.append(ScummVMStableBuild("stable",.
    • Remove the customizations in class ScummVMStableBuild if there were any to make the code inherit from ScummVMBuild without any difference.
    • Edit the file platforms.py and remove all specific rules mentioning ScummVMStableBuild
    • Update the code on the server and reload the buildbot as described here
    • Remove the old snapshots: rm /home/buildbot/dockerized-bb/buildbot-data/packages/snapshots/stable/*
    • Login on Buildbot, force a build of fetch-stable with cleaning and packaging to create packages for the new stable.
  • Communication
    • Update IRC and Discord channel description
    • Write a mail to scummvm-devel

Testing

  • Ensure ADGF_TESTING/ADGF_UNSTABLE flags are correct for the release.
  • 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

  • Browse 'git log' since the previous release and add all significant changes to the NEWS file
  • Make sure the translations.dat file is up to date. This file is automatically generated once per week (on Monday morning) and may need to be updated manually if changes to the translations occurred since the last Monday. Use make translations-dat to update the file (and then commit it if it was changed).
  • 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(.md)
    • NEWS(.md)
    • COPYRIGHT
  • Make sure ADGF_TESTING flag is cleared on all games.
  • Review the following port specific files for version updates:
    • backends/platform/ps2/README.PS2
    • backends/platform/psp/README.PSP
    • backends/platform/symbian/README
    • backends/platform/wince/README-WinCE.txt
    • backends/platform/ds/arm9/dist/readme_ds.txt
    • dists/win32/ScummVM.iss (AppVerName)
  • Review the release dates in the following port specific files:
    • dists/win32/scummvm.gdf.xml
  • Make sure package descriptions are up-to-date:
    • dists/redhat/scummvm.spec
  • Create MSVC project files in the release branch (for example branch-1-7-0, where the tarballs are created from)
    • make ideprojects
    • git commit -m "DISTS: Generated Code::Blocks and 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, put them in the FRS directory.
    • There is a script devtools/dist-scummvm.sh, which creates them automatically.
    • Make sure that porters have write access to the release folder on FRS: chmod 775 <folder>
  • Add version to dists/macosx/scummvm_appcast.xml

Branching for minor releases

  • Create a branch for 1.7.0 from branch-1-7, named branch-1-7-0
    • git checkout -b branch-1-7-0 branch-1-7
  • Increase version on branch-1-7-0 to 1.7.0 and commit, push
    • devtools/update-version.pl 1 7 0
    • Manually edit backends/platform/maemo/debian/changelog to reflect correct release date for 1.7.0 entry
    • git commit -m "RELEASE: This is 1.7.0" -a
    • git push origin branch-1-7-0:branch-1-7-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. It is also noteworthy that "--disable-debug" should be passed in order to remove debugging information from the binary.
    • Here is a list of files porters should include in their release archives:
      • AUTHORS
      • COPYING
      • COPYING.BSD
      • COPYING.FREEFONT
      • COPYING.LGPL
      • COPYING.OFL
      • COPYRIGHT
      • NEWS(.md)
      • README(.md) (generic ScummVM one)
      • localized NEWS and README files (from doc/) (optional)
      • scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
      • scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
      • scummremastered.zip (from gui/themes directory) (if your port uses new GUI)
      • translations.dat (from gui/themes directory)
      • pred.dic (from dists directory)
      • access.dat (from dists/engine-data)
      • access.dat (from dists/engine-data)
      • cryomni3d.dat (from dists/engine-data)
      • drascula.dat (from dists/engine-data)
      • fonts.dat (from dists/engine-data)
      • hugo.dat (from dists/engine-data)
      • kyra.dat (from dists/engine-data)
      • lure.dat (from dists/engine-data)
      • mort.dat (from dists/engine-data)
      • neverhood.dat (from dists/engine-data)
      • queen.tbl (from dists/engine-data)
      • sky.cpt (from dists/engine-data)
      • supernova.dat (from dists/engine-data)
      • teenagent.dat (from dists/engine-data)
      • titanic.dat (from dists/engine-data)
      • tony.dat (from dists/engine-data)
      • toon.dat (from dists/engine-data)
      • ultima.dat (from dists/engine-data)
      • wintermute.zip (from dists/engine-data)
      • xeen.ccs (from dists/engine-data)
      • your build binary
      • your build-specific README (optional)
      • ...
  • Porters need to upload binaries at some service and then send the link to the team member managing the release (this should be detailed in the email sent to porters with the links to the tarballs).
  • 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.
    • Sparkle automatic updates
      • Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
      • Sign the macOS and Win32 binaries with our private key for Sparkle
      • Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
      • Copy the app cast file on the website as appcasts/macosx/release.xml
    • Copy over the release files to FRS
      • 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 a version

  • When 1.7.0 is ready to be announced, make a permanent v1.7.0 tag in git to mark the release
    • git checkout branch-1-7-0
    • git tag -m "Tag v1.7.0" v1.7.0
    • git push origin tag v1.7.0
  • Also increase the version number on the 1.7.x branch to 1.7.1pre
    • git checkout branch-1-7
    • devtools/update-version.pl 1 7 1 pre
    • git commit -m "RELEASE: This is 1.7.1pre" -a
  • Create annotated tag desc/1.7.1pre on that commit and push
    • git tag -m "Mark 1.7.1pre" desc/1.7.1pre
    • git push origin tag desc/1.7.1pre branch-1-7:branch-1-7
  • Add this doc to the Read The Doc admin settings to generate the documentation for this version.

Creating source tarballs

Then you need to create and upload the tarballs.

devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0

Then upload the resulting scummvm-1.9.0.tar.gz, scummvm-1.9.0.tar.bz2, scummvm-1.9.0.tar.xz and scummvm-1.9.0.tar.zip to the FRS.


Signing binaries

Put tarballs into directory archives/, run:

bin/generate_appcast archives/
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-win32.exe dsa_priv.pem
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-macosx.dmg dsa_priv.pem

The first line will generate file archives/release.xml. The following ones will just spit out DSA signatures.

Copy/paste signatures to dists/macosx/scummvm_appcast.xml in the main git repo.

Then run:

make publish-appcast
cd ../scummvm-web
git commit -m 'WEB: Sync appcast' -a

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 a template for news items on other sites).
    • Create data/compatibility/compat-2.1.1.xml
    • Update data/downloads.xml file
    • Change version constants in include/Constants.php
    • Make sure Sparkle cast is updated (see #Signing binaries)
  • Update / notify various sites:
    • Post about the release on our forums
    • Post about the release on Facebook
  • Put the updated web site online
  • Update IRC and Discord channel topics

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.
  • Set the First Official Version field for new platforms.
  • 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.