Difference between revisions of "ReleasingWesnoth"

From The Battle for Wesnoth Wiki
(Remove Subversion-specific terminology)
(completely redo this page to get it mainly in sync what is really done these days)
Line 2: Line 2:
  
 
Tools needed for releasing:
 
Tools needed for releasing:
 
+
* Normal tools to build everything from Wesnoth and to fetch the repository head (cmake based assumed for this page!)
* Normal tools to build everything from Wesnoth and to fetch the repository head
 
 
* <code>po4a</code> (to be able to update the manpages and manual)
 
* <code>po4a</code> (to be able to update the manpages and manual)
* <code>docbook-xml-dtd</code> (to generate the manual HTML files, I am currently using <code>app-text/docbook-xml-dtd-4.5</code>, not needed anymore for >= 1.5.x but manual files should be regenerated by hand before packaging!)
+
* <code>docbook-xml-dtd</code> (to generate the manual HTML files)
 
* <code>xdelta</code> 1.x (to create the Xdelta files)
 
* <code>xdelta</code> 1.x (to create the Xdelta files)
* <code>optipng</code> (only for needed to run <code>utils/wesnoth-pngcrush</code>, not for normal releases)
+
* <code>rsync</code> for upload of tarballs
 +
 
 +
Tools for other processes:
 +
* <code>optipng</code> (only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)
 +
* <code>imagemagick</code> (tool <code>convert</code>, only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)
 +
* <code>advancecomp</code> (tool <code>advdef</code>, only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)
  
 
== General maintenance ==
 
== General maintenance ==
  
Not strictly release associated.
+
Not strictly release associated though the pot-update part should be done right before every release.
  
* Run <code>utils/wesnoth-pngcrush</code> from the main directory of the Subversion repository every now and then, requires the package optipng
+
* Run <code>utils/wesnoth-optipng</code> from the main directory of the checkout every now and then, requires the packages optipng, imagemagick and advancecomp
* Run a <code>pot-update</code> regulary, once shortly before the release, this includes the following steps as of current 1.4-rc time:
+
* Run a <code>pot-update</code> regulary, once shortly before the release, this includes the following steps as of current 1.11.2 time:
  
  Change into the repository directory, pull, and run ./autogen.sh
+
  Change into the repository directory, pull (and rebase!)
  # Recreate the manpages and manuals
+
  # create build folder and cd into it
  make update-po4a
+
  mkdir wesnoth-build && cd wesnoth-build
 +
# run cmake and at leastenable the pot-update target
 +
cmake ../ -DENABLE_POT_UPDATE_TARGET=TRUE
 
   
 
   
  # Update all other po files
+
# Recreate the manpages (watch out for errors, they are very frequent!)
  cd po && make update-po && cd ..
+
make update-po4a-man
 +
# Recreate the manual
 +
make update-po4a-manual
 +
  # Update all the other pot and po files
 +
  make pot-update
 +
# make sure all files compile
 +
make mo-update
 
   
 
   
  # Make sure that no new files were created, if new manpages/manuals were created, add them via svn add
+
# get out of the build folder back to the git folder
  svn st
+
cd ../
 +
  # Make sure that no new files were created in doc/, if new manpages/manuals were created, add them
 +
  git status doc/
 
   
 
   
 
  # Commit the bunch of updated po files and manpages/manuals
 
  # Commit the bunch of updated po files and manpages/manuals
  svn ci doc/ po/
+
  git add doc/ po/
  
 +
(the following commands should be run but are usually forgotten...)
 
* Run <code>make</code> inside <code>data/tools</code> (runs a check for unresolved references, followed by <code>wmllint</code> with appropriate options, followed by a check for unused image and resource files)
 
* Run <code>make</code> inside <code>data/tools</code> (runs a check for unresolved references, followed by <code>wmllint</code> with appropriate options, followed by a check for unused image and resource files)
 
* Run <code>wmlindent</code> from <code>data/tools</code> to indent all content correctly
 
* Run <code>wmlindent</code> from <code>data/tools</code> to indent all content correctly
* Run <code>data/tools/about_cfg_to_wiki</code> from svn root and copy the output to [[Credits]] to updates the credits on the website
 
 
* Have a look at the pages from the category [[:Category:Review_on_Release|Review on Release]]
 
* Have a look at the pages from the category [[:Category:Review_on_Release|Review on Release]]
  
== Release commands ==
+
== Creating the tarball, xdelta and checksum ==
 
+
First step of releasing is that you warn the devs via IRC and update the topic accordingly. Afterwards you just do the last steps and create the tarball:
* Bump the version in <code>configure.ac</code>, <code>src/wesconfig.h</code>, <code>config.h.dummy</code>
+
* Make sure to run a pot-update (c.f. above)
 +
* Bump the version in <code>src/wesconfig.h</code>
 
* Check <code>changelog</code> and <code>players_changelog</code>, change the version of both
 
* Check <code>changelog</code> and <code>players_changelog</code>, change the version of both
 
* Commit
 
* Commit
* Do the following steps to generate a tarball:
+
* Do the following steps to generate the release files:
  
  # Update Subversion repository, just to be sure that you have the latest version,
+
  # Update the git checkout, just to be sure that you have the latest version,
  # write down the revision you are using
+
git pull --rebase
  svn up
+
 +
# export the git checkout into a release directory
 +
git checkout-index -a -f --prefix=/absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/
 +
 +
  # create the tarball
 +
cd /absolute/path/to/export/root-folder/
 +
  tar cf wesnoth-TAGNUMBER.tar wesnoth-TAGNUMBER
 
   
 
   
  # Exporting the Subversion directory to have a clean version of the tree and
+
  # create the xdelta (assumption: the uncompressed aaa (oldversion) exists)
  # switch into the temporary release dir
+
  xdelta delta wesnoth-aaa.tar wesnoth-bbb.tar wesnoth-aaa.tar-wesnoth-bbb.tar.xdelta
svn export wesnoth wesnoth_release && cd wesnoth_release
 
 
   
 
   
  # Generate configure files
+
  # compress the tarball
  ./autogen.sh
+
  bzip2 -9 wesnoth-TAGNUMBER.tar
 
   
 
   
  # Create a bzip2 compressed tarball,
+
  # create md5sum
  # in this step all po files, the manpages and the manual will be updated
+
  md5sum wesnoth-TAGNUMBER.tar.bz2 > wesnoth-TAGNUMBER.tar.bz2.md5
  make dist-bzip2
+
 
 +
== File upload ==
 +
The following files should be ready for upload now:
 +
* wesnoth-TAGNUMBER.tar.bz2
 +
* wesnoth-TAGNUMBER.tar.bz2.md5
 +
* wesnoth-aaa.tar-wesnoth-bbb.tar.xdelta
 +
 
 +
These files now need to be uploaded to files.wesnoth.org (as backup) and to sourceforge.net. Just use rsync via ssh to do so. The exact paths for wesnoth.org might change when the server setup changes. After upload to wesnoth.org it might be faster to just ssh there and upload to sf.net from wesnoth.org.
 +
 
 +
Upload to wesnoth:
 +
  rsync -avP -e ssh FILES ivanovic@wesnoth.org:WWW/html/files/
  
* Now there should be the tarball named <code>wesnoth-VERSION.tar.bz2</code> in the root of <code>wesnoth_release</code>, move it somewhere for testing
+
Upload to sf.net:
* Uncompress the tarball with <code>tar xfj wesnoth-VERSION.tar.bz2</code> and change into the resulting folder named <code>wesnoth-VERSION/</code>
+
* STREAM: replace with ''wesnoth'' for dev releases and ''wesnoth-1.10'' for a stable release of the 1.10 series (change the version number accordingly)
* Run <code>configure</code> with parameters to build all necessary stuff that should be built (at least <code>--enable-editor</code>, <code>--enable-server</code> and <code>--enable-campaign-server</code> are needed, the rest is just meant to seperate all data directories from the normal installation ones)
+
* RELEASENAME: replace with the release name, e.g. ''wesnoth-1.11.2''
 +
* Use your normal sf.net username and password for upload
  
  ./configure --enable-server --enable-editor --enable-campaign-server \
+
  rsync -avP -e ssh FILES ivanovic,wesnoth@frs.sourceforge.net:/home/frs/project/w/we/wesnoth/STREAM/RELEASENAME
--bindir=/games-bin --datadir=/games/ \
 
--with-preferences-dir=.wesnoth-test --program-suffix=-test --with-datadir-name=wesnoth-test
 
  
* Compile everything, use <code>LC_ALL=C</code> to have English error output if something goes wrong:
+
== Build the release for testing ==
 +
The upload can already be started while the upload is running. The upload of the files might take a long time, so starting it early can be a good option. Before installing make sure that no old leftover files are there. Also remove the old preferences. Thi probably requires running as root for the installed files, user privilegies are enough to remove stuff in <code>~/.wesnoth-test</code>.
  
  LC_ALL=C make
+
You can just reuse the export folder for building:
 +
  # cd into export folder
 +
cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/
 +
# create build folder
 +
mkdir wesnoth-build && cd wesnoth-build
  
* Remove all existing test stuff you currently have installed (probably requires running as root for the installed files, user privilegies are enough to remove stuff in <code>~/.wesnoth-test</code>)
+
# cmake command to create a test build with suffix -test
* Install the game with <code>make install</code>, running right from the sources is '''not''' enough to be sure that everything works as expected, for normal installation into your system, root privilegies are probably needed (replace <code>su -c</code> by <code>sudo</code> if your system uses it)
+
cmake . -DBINDIR=/games-bin -DDATAROOTDIR=/games -DENABLE_SERVER=TRUE -DENABLE_CAMPAIGN_SERVER=TRUE \
 +
  -DPREFERENCES_DIR=.wesnoth-test -DBINARY_SUFFIX=-test -DDATADIRNAME=wesnoth-test \
 +
  -DENABLE_NOTIFICATIONS=TRUE
 +
 +
# build
 +
LC_ALL=C nice -n 11 make
 +
 +
# install
 +
su -c "make install"
  
su -c "LC_ALL=C make install"
+
Now cd somewhere else and test ''wesnoth-test''. Running right from the sources is '''not''' enough to be sure that everything works as expected.
  
 
== Test the build ==
 
== Test the build ==
 
 
This at least includes the following:
 
This at least includes the following:
  
Line 87: Line 128:
 
If all of those points are working as expected, go on, if not, fix the problems and restart from the very beginning.
 
If all of those points are working as expected, go on, if not, fix the problems and restart from the very beginning.
  
If everything does work, tag using the revision you wrote down (replace <code>BRANCH</code> either with <code>trunk</code> for a normal development release, or with <code>branches/X.Y</code> for a stable release, the tag number should be of the format <code>X.Y.Z</code>, <code>USER</code> is the user account at [http://gna.org/ gna.org] with commit privilegies):
+
== Tagging and extra release related steps ==
 
+
If everything does work, tag your release. Just use TAGNUMMER for the tag, no need to add wesnoth- in front. Ask someone who knows git to get to know how to create a tag with it.
svn -r REVISION copy svn+ssh://USER@svn.gna.org/svn/wesnoth/BRANCH svn+ssh://USER@svn.gna.org/svn/wesnoth/tags/TAGNUMBER
 
 
 
Create an updated [http://www.wesnoth.org/macro-reference.html macro-reference.html]:
 
  
  cd wesnoth-VERSION-dir/data/tools
+
Create an updated [http://www.wesnoth.org/macro-reference.html macro-reference.html] and upload it:
 +
  cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/data/tools
 
  make macro-reference.html
 
  make macro-reference.html
 +
scp macro-reference.html wesnoth@wesnoth.org:WWW/html/macro-reference.html
  
Upload the created file <code>macro-reference.html</code> to ftp://ftp.wesnoth.org/www/misc/
+
Create latest credits and use them to update the website
 +
cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/
 +
data/tools/about_cfg_to_wiki -w /games-bin/wesnoth-test > about.wiki
  
Create an updated unit tree:
+
Open about.wiki in a text editor and paste the content to [[Credits]].
  
* <code>ssh</code> to server.wesnoth.org
+
== Notify packagers ==
* Run <code>update_unit_tree <new version></code> to update http://units.wesnoth.org/
+
Once all steps above are done and the upload to sourceforge is finished, you still need to notify the packagers. The announcement should include the important changes for packagagers (especially path and requirementchanges) as well as the md5 of the tarball attached, Make sure to sign md5 and mail when sending.
  
Create the md5sum for the tarball:
+
This is the current list of packagers who want to be notified as of 1.11.2:
 
+
  markus.schmeing |ATTT| udo.edu (unofficial gentoo packages, basically inactive)
md5sum wesnoth-VERSION.tar.bz2 > wesnoth-VERSION.tar.bz2.md5
 
 
 
Create the Xdelta of the uncompressed tarball, you do need the uncompressed tarball of the previous release to be able to do so:
 
 
 
bunzip2 wesnoth-VERSION.tar.bz2
 
xdelta delta wesnoth-OLDVERSION.tar wesnoth-VERSION.tar wesnoth-OLDVERSION.tar-wesnoth-VERSION.tar.xdelta
 
 
 
* Upload the files <code>wesnoth-VERSION.tar.bz2</code>, <code>wesnoth-VERSION.tar.bz2.md5</code> and <code>wesnoth-OLDVERSION.tar-wesnoth-VERSION.tar.xdelta</code> to ftp://ftp.wesnoth.org/www/files/ and sourceforge.net/incoming
 
* Create the respective release at the wesnoth project at sf.net. Paste the content of <code>players_changelog</code> as release notes and the full changelog as <code>changelog</code>. If there is content in <code>RELEASE_NOTES</code>, use it at the top of the “release notes” section
 
 
 
Once the upload is completed, do contact the known packagers, this is the current list as of 1.4.4:
 
 
 
  amirserdang  |ATTT| gmail.com (current Mac OSX packager)
 
joerg.hinrichs |ATTT| softeck.de (old Windows packager)
 
cycholka  |ATTT| wp.pl (current Windows packager)
 
 
  hhetter  |ATTT| novell.com (OpenSuse packager)
 
  hhetter  |ATTT| novell.com (OpenSuse packager)
rhonda  |ATTT| deb.at (current debian packager)
 
bero  |ATTT| arklinux.org (arklinux)
 
mr_bones_  |ATTT| gentoo.org (official gentoo packages, will only be included for stable and beta/rc releases)
 
markus.schmeing  |ATTT| udo.edu (unofficial gentoo packages, basically inactive)
 
burningshadow  |ATTT| syllable-norden.info  (syllable)
 
 
  enqlave  |ATTT| gmail.com (unknown)
 
  enqlave  |ATTT| gmail.com (unknown)
 +
michael  |ATTT| sterretts.net (unknown)
 
  sobotkap  |ATTT| centrum.cz (OpenSolaris)
 
  sobotkap  |ATTT| centrum.cz (OpenSolaris)
 +
rhonda  |ATTT| deb.at (current debian packager)
 +
cycholka  |ATTT| wp.pl (old Windows packager)
 +
amirserdang  |ATTT| gmail.com (old Mac OSX packager)
 +
ben  |ATTT| happyspork.com (old Mac OSX packager)
 +
wtogami  |ATTT| gmail.com (unknown)
 +
alarantalara  |ATTT| gmail.com (current Mac OSX packager)
 +
dougmencken  |ATTT| gmail.com (unknown)
 +
lipka.boldizsar  |ATTT| gmail.com (unknown)
  
 
Basic text for such an announcement:
 
Basic text for such an announcement:
 
+
subject: Wesnoth TAGNUMBER is out!
  Topic: Wesnoth VERSION is out
+
  mailtext:
  Body:
+
Hi,
 +
Wesnoth TAGNUMBER is out! :)
 +
  The sources are already available via sf.net and files.wesnoth.org (just as
 +
backup). I will announce the release once the MacOSX and Windows binaries are
 +
done and uploaded. The announcement will not happen in the next 24h and if the
 +
MacOSX and Windows binaries take "too much time" I will just announce in 72
 +
hours. In the meantime you can create and upload your packages.
 
   
 
   
I am currently uploading the sources to sf.net, they are already available via files.wesnoth.org. I will announce the release tomorrow, so you can create and upload the packages in the meantime.
+
  Some foo about changes/additions/stuff to keep in mind, especially stuff from
+
the RELEASE_NOTES.
  Some foo about changes/additions/stuff to keep in mind that is basically packager specific like added deps and stuff like this
 
 
   
 
   
 
  Best regards and thank you for your contribution to Wesnoth
 
  Best regards and thank you for your contribution to Wesnoth
 
  SIGNATURE
 
  SIGNATURE
 +
 +
attachment: wesnoth-TAGNUMBER.tar.bz2.md5
 +
 +
Contact Soliton/Shadowmaster so that he updates the server to support the new version (required for development releases, should not be needed for stable releases after RC time is started)
  
* Contact Soliton so that he updates the server to support the new version (required for development releases, should not be needed for stable releases after RC time is started)
+
== Cleanup and post release steps ==
* Login to server.wesnoth.org via ssh and run <code>update_unit_tree <new version></code> to update http://units.wesnoth.org/
+
Bump version in <code>wesnoth-VERSION+dev</code> in <code>src/wesconfig.h</code>, <code>changelog</code> and <code>players_changelog</code> and commit the change.
* Up version to <code>wesnoth-VERSION+svn</code> in <code>configure.ac</code>, <code>src/wesconfig.h</code>, <code>config.h.dummy</code>, <code>changelog</code> and <code>players_changelog</code>
 
  
* Wait for about one day
+
Remove the release related files (export folder, tarball, xdelta, ...).
* Update the downloads website
+
 
* Post an announcement in the forums, do at least mention the text from RELEASE_NOTES plus some other important changes
+
== The real annoucement ==
* Update the frontpage
+
Prepare the real announcement forum post for the day it is to be posted. To do so copy the last announcement from the release thread into the moderators forum (edit, then copy&paste). Adjust it to match the new release. And leave it there for fixes and comments until the time for the real announcement comes. Make sure to use the stuff from the RELEASE_NOTES and clean them afterwards.
* Copy the news into the "old news" in the wiki (so that everything will be listed there)
+
 
 +
Wait until the conditions from the mail to the packagers are met (waited at least 24h and OSX and Windows binary are ready OR 72h passed).
 +
 
 +
Now do the following steps to get the real release out:
 +
* Update the downloads website in the wiki.
 +
* Copy the prepared announcement forum post into the announcement category and post it as 'announcement'.
 +
* Set the previous announcement to a 'normal' post.
 +
* Update the frontpage:
 +
** Change version in header to list the latest version.
 +
** Update the news list and make sure to point to the correct forum post.
 +
** If the news section is getting too long, remove some of the oldest posts.
 +
* Copy the new news to [[Older_News]]
 
* Submit versions updates for stable versions to all sites that are known to monitor Wesnoth, ask the respective packagers to do so for OS specific sites (like apple.com).
 
* Submit versions updates for stable versions to all sites that are known to monitor Wesnoth, ask the respective packagers to do so for OS specific sites (like apple.com).
  
 
== Sites monitoring Wesnoth releases ==
 
== Sites monitoring Wesnoth releases ==
 
 
This is a (probably completely outdated) list of sites that monitor Wesnoth releases. Most of these require manual submissions of update request. This should be done by whoever has an account at the respective sites:
 
This is a (probably completely outdated) list of sites that monitor Wesnoth releases. Most of these require manual submissions of update request. This should be done by whoever has an account at the respective sites:
  

Revision as of 16:18, 30 March 2013

Tools

Tools needed for releasing:

  • Normal tools to build everything from Wesnoth and to fetch the repository head (cmake based assumed for this page!)
  • po4a (to be able to update the manpages and manual)
  • docbook-xml-dtd (to generate the manual HTML files)
  • xdelta 1.x (to create the Xdelta files)
  • rsync for upload of tarballs

Tools for other processes:

  • optipng (only for needed to run utils/wesnoth-optipng, not for normal releases)
  • imagemagick (tool convert, only for needed to run utils/wesnoth-optipng, not for normal releases)
  • advancecomp (tool advdef, only for needed to run utils/wesnoth-optipng, not for normal releases)

General maintenance

Not strictly release associated though the pot-update part should be done right before every release.

  • Run utils/wesnoth-optipng from the main directory of the checkout every now and then, requires the packages optipng, imagemagick and advancecomp
  • Run a pot-update regulary, once shortly before the release, this includes the following steps as of current 1.11.2 time:
Change into the repository directory, pull (and rebase!)
# create build folder and cd into it
mkdir wesnoth-build && cd wesnoth-build
# run cmake and at leastenable the pot-update target
cmake ../ -DENABLE_POT_UPDATE_TARGET=TRUE

# Recreate the manpages (watch out for errors, they are very frequent!)
make update-po4a-man
# Recreate the manual
make update-po4a-manual
# Update all the other pot and po files
make pot-update
# make sure all files compile
make mo-update

# get out of the build folder back to the git folder
cd ../
# Make sure that no new files were created in doc/, if new manpages/manuals were created, add them
git status doc/

# Commit the bunch of updated po files and manpages/manuals
git add doc/ po/

(the following commands should be run but are usually forgotten...)

  • Run make inside data/tools (runs a check for unresolved references, followed by wmllint with appropriate options, followed by a check for unused image and resource files)
  • Run wmlindent from data/tools to indent all content correctly
  • Have a look at the pages from the category Review on Release

Creating the tarball, xdelta and checksum

First step of releasing is that you warn the devs via IRC and update the topic accordingly. Afterwards you just do the last steps and create the tarball:

  • Make sure to run a pot-update (c.f. above)
  • Bump the version in src/wesconfig.h
  • Check changelog and players_changelog, change the version of both
  • Commit
  • Do the following steps to generate the release files:
# Update the git checkout, just to be sure that you have the latest version,
git pull --rebase

# export the git checkout into a release directory
git checkout-index -a -f --prefix=/absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/

# create the tarball
cd /absolute/path/to/export/root-folder/
tar cf wesnoth-TAGNUMBER.tar wesnoth-TAGNUMBER

# create the xdelta (assumption: the uncompressed aaa (oldversion) exists)
xdelta delta wesnoth-aaa.tar wesnoth-bbb.tar wesnoth-aaa.tar-wesnoth-bbb.tar.xdelta

# compress the tarball
bzip2 -9 wesnoth-TAGNUMBER.tar

# create md5sum
md5sum wesnoth-TAGNUMBER.tar.bz2 > wesnoth-TAGNUMBER.tar.bz2.md5

File upload

The following files should be ready for upload now:

  • wesnoth-TAGNUMBER.tar.bz2
  • wesnoth-TAGNUMBER.tar.bz2.md5
  • wesnoth-aaa.tar-wesnoth-bbb.tar.xdelta

These files now need to be uploaded to files.wesnoth.org (as backup) and to sourceforge.net. Just use rsync via ssh to do so. The exact paths for wesnoth.org might change when the server setup changes. After upload to wesnoth.org it might be faster to just ssh there and upload to sf.net from wesnoth.org.

Upload to wesnoth:

rsync -avP -e ssh FILES ivanovic@wesnoth.org:WWW/html/files/

Upload to sf.net:

  • STREAM: replace with wesnoth for dev releases and wesnoth-1.10 for a stable release of the 1.10 series (change the version number accordingly)
  • RELEASENAME: replace with the release name, e.g. wesnoth-1.11.2
  • Use your normal sf.net username and password for upload
rsync -avP -e ssh FILES ivanovic,wesnoth@frs.sourceforge.net:/home/frs/project/w/we/wesnoth/STREAM/RELEASENAME

Build the release for testing

The upload can already be started while the upload is running. The upload of the files might take a long time, so starting it early can be a good option. Before installing make sure that no old leftover files are there. Also remove the old preferences. Thi probably requires running as root for the installed files, user privilegies are enough to remove stuff in ~/.wesnoth-test.

You can just reuse the export folder for building:

# cd into export folder
cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/
# create build folder
mkdir wesnoth-build && cd wesnoth-build
# cmake command to create a test build with suffix -test
cmake . -DBINDIR=/games-bin -DDATAROOTDIR=/games -DENABLE_SERVER=TRUE -DENABLE_CAMPAIGN_SERVER=TRUE \
  -DPREFERENCES_DIR=.wesnoth-test -DBINARY_SUFFIX=-test -DDATADIRNAME=wesnoth-test \
  -DENABLE_NOTIFICATIONS=TRUE

# build
LC_ALL=C nice -n 11 make

# install
su -c "make install"

Now cd somewhere else and test wesnoth-test. Running right from the sources is not enough to be sure that everything works as expected.

Test the build

This at least includes the following:

  • Start the editor, check if creating a map is possible
  • Start the game and try to connect to the official multiplayer server and to the add-on server
  • Start the server, connect to it using the game to see if you can enter the lobby
  • Check if in the game each campaign does start
  • Check if you can start the in-game help and the credits
  • Check if it is possible to create a local game
  • Play at least one game/scenario (or droid your side to let the AI play), this can either be a normal campaign scenario or a multiplayer game

If all of those points are working as expected, go on, if not, fix the problems and restart from the very beginning.

Tagging and extra release related steps

If everything does work, tag your release. Just use TAGNUMMER for the tag, no need to add wesnoth- in front. Ask someone who knows git to get to know how to create a tag with it.

Create an updated macro-reference.html and upload it:

cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/data/tools
make macro-reference.html
scp macro-reference.html wesnoth@wesnoth.org:WWW/html/macro-reference.html

Create latest credits and use them to update the website

cd /absolute/path/to/export/root-folder/wesnoth-TAGNUMBER/
data/tools/about_cfg_to_wiki -w /games-bin/wesnoth-test > about.wiki

Open about.wiki in a text editor and paste the content to Credits.

Notify packagers

Once all steps above are done and the upload to sourceforge is finished, you still need to notify the packagers. The announcement should include the important changes for packagagers (especially path and requirementchanges) as well as the md5 of the tarball attached, Make sure to sign md5 and mail when sending.

This is the current list of packagers who want to be notified as of 1.11.2:

markus.schmeing  |ATTT| udo.edu (unofficial gentoo packages, basically inactive)
hhetter  |ATTT| novell.com (OpenSuse packager)
enqlave  |ATTT| gmail.com (unknown)
michael  |ATTT| sterretts.net (unknown)
sobotkap  |ATTT| centrum.cz (OpenSolaris)
rhonda  |ATTT| deb.at (current debian packager)
cycholka  |ATTT| wp.pl (old Windows packager)
amirserdang  |ATTT| gmail.com (old Mac OSX packager)
ben  |ATTT| happyspork.com (old Mac OSX packager)
wtogami  |ATTT| gmail.com (unknown)
alarantalara  |ATTT| gmail.com (current Mac OSX packager)
dougmencken  |ATTT| gmail.com (unknown)
lipka.boldizsar  |ATTT| gmail.com (unknown)

Basic text for such an announcement:

subject: Wesnoth TAGNUMBER is out!
mailtext:
Hi,
Wesnoth TAGNUMBER is out! :)
The sources are already available via sf.net and files.wesnoth.org (just as 
backup). I will announce the release once the MacOSX and Windows binaries are 
done and uploaded. The announcement will not happen in the next 24h and if the 
MacOSX and Windows binaries take "too much time" I will just announce in 72 
hours. In the meantime you can create and upload your packages.

Some foo about changes/additions/stuff to keep in mind, especially stuff from 
the RELEASE_NOTES.

Best regards and thank you for your contribution to Wesnoth
SIGNATURE

attachment: wesnoth-TAGNUMBER.tar.bz2.md5

Contact Soliton/Shadowmaster so that he updates the server to support the new version (required for development releases, should not be needed for stable releases after RC time is started)

Cleanup and post release steps

Bump version in wesnoth-VERSION+dev in src/wesconfig.h, changelog and players_changelog and commit the change.

Remove the release related files (export folder, tarball, xdelta, ...).

The real annoucement

Prepare the real announcement forum post for the day it is to be posted. To do so copy the last announcement from the release thread into the moderators forum (edit, then copy&paste). Adjust it to match the new release. And leave it there for fixes and comments until the time for the real announcement comes. Make sure to use the stuff from the RELEASE_NOTES and clean them afterwards.

Wait until the conditions from the mail to the packagers are met (waited at least 24h and OSX and Windows binary are ready OR 72h passed).

Now do the following steps to get the real release out:

  • Update the downloads website in the wiki.
  • Copy the prepared announcement forum post into the announcement category and post it as 'announcement'.
  • Set the previous announcement to a 'normal' post.
  • Update the frontpage:
    • Change version in header to list the latest version.
    • Update the news list and make sure to point to the correct forum post.
    • If the news section is getting too long, remove some of the oldest posts.
  • Copy the new news to Older_News
  • Submit versions updates for stable versions to all sites that are known to monitor Wesnoth, ask the respective packagers to do so for OS specific sites (like apple.com).

Sites monitoring Wesnoth releases

This is a (probably completely outdated) list of sites that monitor Wesnoth releases. Most of these require manual submissions of update request. This should be done by whoever has an account at the respective sites: