Difference between revisions of "HOWTO-Release"

Jump to navigation Jump to search
3,105 bytes added ,  21:25, 19 March 2021
m (→‎Creating source tarballs: --- fix formatting)
(→‎During the release cycle: -- added section)
(26 intermediate revisions by 4 users not shown)
Line 7: Line 7:


=== 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 ===
=== Branching for major release ===
* Create a branch for the 1.7.x releases from master, named branch-1-7
* Create a branch for the 2.2.x releases from master, named branch-2-2
** <code>git checkout -b branch-1-7 master</code>
** <code>git checkout -b branch-2-2 master</code>
* Increase version on branch-1-7 to 1.7.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
* 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 1 7 0 pre</code>
** <code>devtools/update-version.pl 2 2 0 pre</code>
** <code>git commit -m "RELEASE: This is 1.7.0pre" -a</code>
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
* Create annotated tag desc/1.7.0pre on that commit and push
* Create annotated tag desc/2.2.0pre on that commit and push
** <code>git tag -m "Mark 1.7.0pre" desc/1.7.0pre</code>
** <code>git tag -m "Mark 2.2.0pre" desc/2.2.0pre</code>
** <code>git push origin tag desc/1.7.0pre branch-1-7:branch-1-7</code>
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
* Increase version on master to 1.8.0git, and commit
* Increase version on master to 2.3.0git, and commit
** <code>git checkout master</code>
** <code>git checkout master</code>
** <code>devtools/update-version.pl 1 8 0 git</code>
** <code>devtools/update-version.pl 2 3 0 git</code>
** <code>git commit -m "RELEASE: This is 1.8.0git" -a</code>
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
* Create annotated tag desc/1.8.0git on that commit and push
* Create annotated tag desc/2.3.0git on that commit and push
** <code>git tag -m "Mark 1.8.0git" desc/1.8.0git</code>
** <code>git tag -m "Mark 2.3.0git" desc/2.3.0git</code>
** <code>git push origin tag desc/1.8.0git master</code>
** <code>git push origin tag desc/2.3.0git master</code>
* Update buildbot
** Set <code>scumm_branch_stable = "branch-2-2"</code> in master.cfg around [https://github.com/scummvm/scummvm-sites/blob/buildbot/config/master.cfg#L25 line 25].
** Restart the buildbot as described [[Buildbot#Administration|here]]
* Communication
** Update IRC and Discord channel description
** Write a mail to scummvm-devel


=== Testing ===
=== Testing ===
Line 37: Line 52:


=== Preparing the source ===
=== 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, <code>devtools/update-version.pl</code> meant to help you with this.  It will generate/update the following files:
* 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
Line 43: Line 60:
** 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
* 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
Line 87: Line 102:
*** COPYING.FREEFONT
*** 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)
*** 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)
*** access.dat (from dists/engine-data)
*** cryomni3d.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** fonts.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
Line 104: Line 124:
*** queen.tbl (from dists/engine-data)
*** queen.tbl (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** supernova.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** titanic.dat (from dists/engine-data)
*** tony.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)
*** 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/frs/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 119: Line 142:
** 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
* Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
** -win32.exe as Windows binary
**** Translate it to ReleaseNotes.html with https://markdowntohtml.com/
** -macosx.dmg as Mac binary
*** Sign the macOS and Win32 binaries with our private key for Sparkle
** .tar.bz2 as Linux, FreeBSD and Other binary
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
** -solaris-x86.tar.gz as Solaris binary
*** 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 ===
=== Tagging a version ===
Line 142: Line 171:
Then you need to create and upload the tarballs.
Then you need to create and upload the tarballs.


<source lang="bash">
<syntaxhighlight lang="bash">
devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0
</source>
</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.
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
** Update <tt>data/downloads.xml</tt> file
** [http://freecode.com/ Freecode]  
** Change version constants in <tt>include/Constants.php</tt>
** 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 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 165: Line 217:
* 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.
* 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.
* 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.

Navigation menu