CINXE.COM

ReleasingWesnoth - The Battle for Wesnoth Wiki

<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"/> <title>ReleasingWesnoth - The Battle for Wesnoth Wiki</title> <script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script> <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"ReleasingWesnoth","wgTitle":"ReleasingWesnoth","wgCurRevisionId":74157,"wgRevisionId":74157,"wgArticleId":1496,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Development"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"ReleasingWesnoth","wgRelevantArticleId":1496,"wgRequestId":"cbc3729f2a58ed77fa328c69","wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":[]});mw.loader.state({"site.styles":"ready","noscript":"ready","user.styles":"ready","user":"ready","user.options":"ready","user.tokens":"loading","ext.CookieWarning.styles":"ready","mediawiki.legacy.shared":"ready","mediawiki.legacy.commonPrint":"ready","mediawiki.sectionAnchor":"ready"});mw.loader.implement("user.tokens@15y0z4f",function($,jQuery,require,module){/*@nomin*/mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); });mw.loader.load(["site","mediawiki.page.startup","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.toc","mediawiki.searchSuggest","ext.CookieWarning","skins.wesmere.js"]);});</script> <link rel="stylesheet" href="/load.php?debug=false&amp;lang=en&amp;modules=ext.CookieWarning.styles%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.sectionAnchor&amp;only=styles&amp;skin=Wesmere"/> <script async="" src="/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=Wesmere"></script> <meta name="ResourceLoaderDynamicStyles" content=""/> <link rel="stylesheet" href="/load.php?debug=false&amp;lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=Wesmere"/> <meta name="generator" content="MediaWiki 1.31.16"/> <meta name="description" content="Mac package: details in projectfiles/Xcode/README.md"/> <link rel="shortcut icon" href="/favicon.ico"/> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch_desc.php" title="The Battle for Wesnoth Wiki (en)"/> <link rel="EditURI" type="application/rsd+xml" href="https://wiki.wesnoth.org/api.php?action=rsd"/> <link rel="alternate" type="application/atom+xml" title="The Battle for Wesnoth Wiki Atom feed" href="/index.php?title=Special:RecentChanges&amp;feed=atom"/> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="stylesheet" type="text/css" href="https://www.wesnoth.org/wesmere/css/wesmere-1.2.0.css" /> <script src="https://www.wesnoth.org/wesmere/js/modernizr.js"></script> <link rel="apple-touch-icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/apple-touch-icon.png" sizes="180x180" /> <link rel="icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/favicon-32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/favicon-16.png" sizes="16x16" /> <meta name="theme-color" content="#0f1421" /> <!--[if lt IE 9]><script src="/load.php?debug=false&amp;lang=en&amp;modules=html5shiv&amp;only=scripts&amp;skin=Wesmere&amp;sync=1"></script><![endif]--> </head> <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-ReleasingWesnoth rootpage-ReleasingWesnoth skin-Wesmere action-view"><div class="mw-cookiewarning-container"><div class="mw-cookiewarning-text"><span>Cookies help us deliver our services. By using our services, you agree to our use of cookies.</span><form method="POST"><input name="disablecookiewarning" class="mw-cookiewarning-dismiss" type="submit" value="OK"/></form></div></div> <div id="main"> <div id="nav" role="banner"> <div class="centerbox"> <div id="logo"> <a href="https://www.wesnoth.org/" aria-label="Wesnoth logo"></a> </div> <ul id="navlinks"> <li><a href="https://www.wesnoth.org/">Home</a></li> <li><a href="https://forums.wesnoth.org/viewforum.php?f=62">News</a></li> <li><a href="https://wiki.wesnoth.org/Play">Play</a></li> <li><a href="https://wiki.wesnoth.org/Create">Create</a></li> <li><a href="https://forums.wesnoth.org/">Forums</a></li> <li><a href="https://wiki.wesnoth.org/Project">About</a></li> </ul> <div id="sitesearch" role="search"> <form method="get" action="/index.php"> <input id="searchbox" type="search" name="search" placeholder="Search" value="" title="Search this wiki [Alt+Shift+f]" accesskey="f" /> <span id="searchbox-controls"> <button id="search-go" class="search-button" type="submit" title="Search"> <i class="search-icon" aria-hidden="true"></i> <span class="sr-label">Search this wiki</span> </button> </span> </form> </div> <div class="reset"></div> </div> </div> <div id="content" class="mw-content" role="main"> <a id="top"></a> <div id="wm-wiki-toolbar" role="toolbar"><ul class="wm-toolbar" role="toolbar" aria-label="Wiki"><li id="ca-nstab-main" class="selected"><a href="/ReleasingWesnoth" role="button" title="View the content page [c]" accesskey="c"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">Page</span></a></li><li id="ca-talk" class="new"><a href="/index.php?title=Talk:ReleasingWesnoth&amp;action=edit&amp;redlink=1" rel="discussion" role="button" title="Discussion about the content page (page does not exist) [t]" accesskey="t"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">Discussion</span></a></li><li id="ca-history"><a href="/index.php?title=ReleasingWesnoth&amp;action=history" role="button" title="Past revisions of this page [h]" accesskey="h"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">History</span></a></li><li id="wm-places-menu" class="wm-dropdown"><a class="wm-dropdown-trigger" href="#" title="Places" role="button"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">Places</span><i class="wm-toolbar-dropdown-marker" aria-hidden="true"></i></a><ul class="wm-dropdown-menu" role="menu"><li id="n-mainpage-description"><a href="/Main_Page" role="menuitem" title="Visit the main page [z]" accesskey="z"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Main page</span></a></li><li id="n-recentchanges"><a href="/Special:RecentChanges" role="menuitem" title="A list of recent changes in the wiki [r]" accesskey="r"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Recent changes</span></a></li><li id="n-randompage"><a href="/Special:Random" role="menuitem" title="Load a random page [x]" accesskey="x"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Random page</span></a></li><li id="n-help-mediawiki"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" role="menuitem"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Help about MediaWiki</span></a></li></ul><li id="wm-advanced-menu" class="wm-dropdown"><a class="wm-dropdown-trigger" href="#" title="Advanced" role="button"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">Advanced</span><i class="wm-toolbar-dropdown-marker" aria-hidden="true"></i></a><ul class="wm-dropdown-menu" role="menu"><li id="ca-viewsource"><a href="/index.php?title=ReleasingWesnoth&amp;action=edit" role="menuitem" title="This page is protected.&#10;You can view its source [e]" accesskey="e"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>View source</span></a></li><li id="t-whatlinkshere"><a href="/Special:WhatLinksHere/ReleasingWesnoth" role="menuitem" title="A list of all wiki pages that link here [j]" accesskey="j"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>What links here</span></a></li><li id="t-recentchangeslinked"><a href="/Special:RecentChangesLinked/ReleasingWesnoth" rel="nofollow" role="menuitem" title="Recent changes in pages linked from this page [k]" accesskey="k"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Related changes</span></a></li><li id="t-specialpages"><a href="/Special:SpecialPages" role="menuitem" title="A list of all special pages [q]" accesskey="q"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Special pages</span></a></li><li id="t-permalink"><a href="/index.php?title=ReleasingWesnoth&amp;oldid=74157" role="menuitem" title="Permanent link to this revision of the page"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Permanent link</span></a></li><li id="t-info"><a href="/index.php?title=ReleasingWesnoth&amp;action=info" role="menuitem" title="More information about this page"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Page information</span></a></li></ul></ul><ul class="wm-toolbar" role="toolbar" aria-label="User"><li id="wm-account-menu" class="wm-dropdown"><a class="wm-dropdown-trigger" href="#" title="Your account" role="button"><i class="wm-toolbar-icon" aria-hidden="true"></i><span class="sr-label">Not logged in</span><i class="wm-toolbar-dropdown-marker" aria-hidden="true"></i></a><ul class="wm-dropdown-menu" role="menu"><li id="pt-login"><a href="/index.php?title=Special:UserLogin&amp;returnto=ReleasingWesnoth" role="menuitem" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><i class="wm-toolbar-icon" aria-hidden="true"></i><span>Log in</span></a></li></ul></ul></div> <!-- wm-wiki-toolbar --> <h1 class="firstHeading" lang="en">ReleasingWesnoth</h1> <div id="bodyContent"> <div id="siteSub">From The Battle for Wesnoth Wiki</div> <div id="contentSub"></div> <!-- start wikipage --> <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><div id="toc" class="toc"><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#This_page_is_not_maintained_anymore._See_Release_Steps."><span class="tocnumber">1</span> <span class="toctext">This page is not maintained anymore. See Release_Steps.</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#todo_steps_to_add"><span class="tocnumber">2</span> <span class="toctext">todo steps to add</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#Version_numbering"><span class="tocnumber">3</span> <span class="toctext">Version numbering</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#Tools"><span class="tocnumber">4</span> <span class="toctext">Tools</span></a></li> <li class="toclevel-1 tocsection-5"><a href="#General_maintenance"><span class="tocnumber">5</span> <span class="toctext">General maintenance</span></a></li> <li class="toclevel-1 tocsection-6"><a href="#Release_tasks"><span class="tocnumber">6</span> <span class="toctext">Release tasks</span></a> <ul> <li class="toclevel-2 tocsection-7"><a href="#Preparation_steps"><span class="tocnumber">6.1</span> <span class="toctext">Preparation steps</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#Generating_the_files"><span class="tocnumber">6.2</span> <span class="toctext">Generating the files</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-9"><a href="#File_upload"><span class="tocnumber">7</span> <span class="toctext">File upload</span></a></li> <li class="toclevel-1 tocsection-10"><a href="#Build_the_release_for_testing"><span class="tocnumber">8</span> <span class="toctext">Build the release for testing</span></a></li> <li class="toclevel-1 tocsection-11"><a href="#Test_the_build"><span class="tocnumber">9</span> <span class="toctext">Test the build</span></a></li> <li class="toclevel-1 tocsection-12"><a href="#Tagging_and_extra_release_related_steps"><span class="tocnumber">10</span> <span class="toctext">Tagging and extra release related steps</span></a></li> <li class="toclevel-1 tocsection-13"><a href="#Alternative_post-tag_package_creation_method"><span class="tocnumber">11</span> <span class="toctext">Alternative post-tag package creation method</span></a></li> <li class="toclevel-1 tocsection-14"><a href="#Notify_packagers"><span class="tocnumber">12</span> <span class="toctext">Notify packagers</span></a> <ul> <li class="toclevel-2 tocsection-15"><a href="#Example_messages"><span class="tocnumber">12.1</span> <span class="toctext">Example messages</span></a> <ul> <li class="toclevel-3 tocsection-16"><a href="#Development_version"><span class="tocnumber">12.1.1</span> <span class="toctext">Development version</span></a></li> <li class="toclevel-3 tocsection-17"><a href="#Stable_version"><span class="tocnumber">12.1.2</span> <span class="toctext">Stable version</span></a></li> </ul> </li> </ul> </li> <li class="toclevel-1 tocsection-18"><a href="#Cleanup_and_post_release_steps"><span class="tocnumber">13</span> <span class="toctext">Cleanup and post release steps</span></a></li> <li class="toclevel-1 tocsection-19"><a href="#The_real_announcement"><span class="tocnumber">14</span> <span class="toctext">The real announcement</span></a></li> </ul> </div> <h2><span class="mw-headline" id="This_page_is_not_maintained_anymore._See_Release_Steps.">This page is not maintained anymore. See <a href="/Release_Steps" title="Release Steps">Release_Steps</a>.</span></h2> <h2><span class="mw-headline" id="todo_steps_to_add">todo steps to add</span></h2> <p>Mac package: details in projectfiles/Xcode/README.md </p><p>Windows package:&#160;? </p><p>Android package: (third party, but still, details?) </p><p>iOS package:&#160;? </p><p>For us: </p> <ul><li>forum post in News</li> <li>forum post in Announcements</li> <li>Updating the download page on the wiki</li> <li>Updating the front page</li> <li>rebuild the front page (<code>git pull</code> and <code>make</code> after SSHing to www.wesnoth.org)</li> <li>Announcing the release on Discord</li> <li>Announcing the release on Steam. <ul><li>This included making a new header graphic if it's a stable release.</li></ul></li> <li>Announcing the release on Twitter with a link to the forum post</li></ul> <h2><span class="mw-headline" id="Version_numbering">Version numbering</span></h2> <p>We use the even/odd minor number convention. A.B.C where B is even means stable and B is odd means unstable/development version. </p><p>1.15.x are development versions for 1.16.0. </p><p>A development version should be called "beta 1" when no further API changes are expected, nor string changes. At that point, translators and add-on authors can start working on 1.15.x without worrying that the rug be swept under their feet. </p><p>A development version should be called "release candidate 1" when all blockers have been fixed. </p><p>During the beta/RC/stable stages, no API changes (e.g., Lua/WML interfaces or semantics) should be made , nor large-scale or destabilizing internal changes, nor build dependencies changed. That's true from "1.15.x (1.16 beta 1)" and for the rest of the 1.16.x releases too. Such changes should be made in 1.17.x for 1.18. </p> <h2><span class="mw-headline" id="Tools">Tools</span></h2> <p>Tools needed for releasing: </p> <ul><li>Normal tools to build everything from Wesnoth and to fetch the repository head (cmake based assumed for this page!)</li> <li><code>po4a</code> (to be able to update the manpages and manual)</li> <li><code>docbook-xml-dtd</code> (to generate the manual HTML files)</li> <li><code>xdelta</code> 1.x (to create the Xdelta files)</li> <li><code>rsync</code> for upload of tarballs</li></ul> <p>Tools for other processes: </p> <ul><li><code>optipng</code> (only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)</li> <li><code>imagemagick</code> (tool <code>convert</code>, only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)</li> <li><code>advancecomp</code> (tool <code>advdef</code>, only for needed to run <code>utils/wesnoth-optipng</code>, not for normal releases)</li></ul> <h2><span class="mw-headline" id="General_maintenance">General maintenance</span></h2> <p>Not strictly release associated though the pot-update part should be done right before every release. </p> <ul><li>Run <code>utils/wesnoth-optipng</code> from the main directory of the checkout every now and then (read: <b>very</b> rarely, because it enlarges the Git repository for <i>very</i> negligible reductions in distribution size), requires the packages optipng, imagemagick and advancecomp</li> <li>Run a <code>pot-update</code> regularly, once shortly before the release and before each string-freeze (including string-freezes in preparation for stable releases). This involves the following steps as of 1.13.3:</li></ul> <pre># target "pot-update" regenerates pot files and updates po files according to them # target "update-po4a" reruns po4a for man pages and manual # target "manual" regenerates manual scons pot-update update-po4a manual # 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 commit doc/ po/ </pre> <p>(the following commands should be run but are usually forgotten...) </p> <ul><li>Run <code>make lint</code> inside <code>data/tools</code> (runs <code>wmllint</code> with appropriate options), fix warnings or prod campaign and content maintainers as needed</li> <li>Run <code>make reindent</code> from <code>data/tools</code> to reindent all mainline WML according to our conventions (probably don't want to do this too often as it may inconvenience coders)</li> <li>Have a look at the pages from the category <a href="/Category:Review_on_Release" title="Category:Review on Release">Review on Release</a></li> <li>If it's a 1.foo.0 release, start a new campaignd instance on add-ons.wesnoth.org and update the port numbers as in <a rel="nofollow" class="external free" href="https://github.com/wesnoth/wesnoth/commit/211f14176ce57509003ca4542d388c526157093c">https://github.com/wesnoth/wesnoth/commit/211f14176ce57509003ca4542d388c526157093c</a></li> <li>Announce to developers the string freeze start date (deadline for string changes) and the release cutoff date (deadline for commits)</li></ul> <h2><span class="mw-headline" id="Release_tasks">Release tasks</span></h2> <h3><span class="mw-headline" id="Preparation_steps">Preparation steps</span></h3> <ul><li>Merge the fixes on <a href="/SpellingMistakes" title="SpellingMistakes">SpellingMistakes</a></li> <li>Review issues in the relevant labels (probably these? <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/labels/Blocker">Blocker</a>, <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/labels/Regression">Regression</a>, <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/labels/Urgent">Urgent</a>, and either <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/labels/Fwdport">Fwdport</a> or <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/labels/Backport">Backport</a> depending on what branch you're releasing) and milestones (for example, <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/milestone/9">1.15.2</a> and <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/milestone/13">1.16.0</a>, if a development release; just <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/milestone/17">1.14.9</a>, if a stable release). <ul><li>For 1.15.3, review the <a rel="nofollow" class="external text" href="https://github.com/wesnoth/wesnoth/milestone/20">pre-1.16.0 string freeze</a> issues</li></ul></li> <li>Review the list of issues for the <i>previous</i> patch release (1.15.1 or 1.14.8), make sure it's empty.</li> <li>Make sure to run and commit a pot-update (see above), and update to the latest revision of the branch if needed. At this point you should warn people to stop pushing commits to the branch you'll be using for the release so as to avoid last-minute work sync issues or new unexpected bugs.</li> <li>Check <code>changelog</code> and <code>players_changelog</code> for completeness and correctness, line wrap to 80 columns.</li> <li>Bump the version numbers in <code>src/wesconfig.h</code>, <code>Doxyfile</code>, <code>changelog</code>, <code>players_changelog</code>, and <code>projectfiles/Xcode/Info.plist</code> and commit. Note that as of version 1.13.2 there are additional <code>RC_VERSION_*</code> macros in <code>src/wesconfig.h</code> needed by Windows builds. Since unlike <code>VERSION</code> these aren't freeform values, they should represent the next release version whenever <code>VERSION</code> represents an in-dev version (e.g. if <code>VERSION</code> is <code>1.13.2+dev</code>, the <code>RC_VERSION_*</code> macros should have the values for <code>1.13.3</code> instead).</li></ul> <h3><span class="mw-headline" id="Generating_the_files">Generating the files</span></h3> <pre># Update the git checkout, just to be sure that you have the # latest version git pull --rebase # Export the git checkout into a release tar archive (substitute # $VERSION with the release version number and $BRANCH with the # source branch). This will automatically exclude unwanted # directories from the archive following export-ignore rules in # .gitattributes git archive --format=tar --prefix="wesnoth-$VERSION/" $BRANCH &gt; "wesnoth-$VERSION.tar" # Create the xdelta patch for the archives (this assumes that the # uncompressed $OLDVERSION tar archive is present!) xdelta delta wesnoth-$OLDVERSION.tar wesnoth-$VERSION.tar wesnoth-$OLDVERSION.tar-wesnoth-$VERSION.tar.xdelta # Compress the tarball bzip2 wesnoth-$VERSION.tar # Create the SHA256 sum for the tarball sha256sum wesnoth-$VERSION.tar.bz2 &gt; wesnoth-$VERSION.tar.bz2.sha256 </pre> <h2><span class="mw-headline" id="File_upload">File upload</span></h2> <p>The following files should be ready for upload now: </p> <ul><li><code>wesnoth-$VERSION.tar.bz2</code></li> <li><code>wesnoth-$VERSION.tar.bz2.sha256</code></li> <li><code>wesnoth-$OLDVERSION.tar-wesnoth-$VERSION.tar.xdelta</code></li></ul> <p>You must upload these files to SourceForge.net and to <code>files.wesnoth.org/releases/</code> (as backup). Since the tarballs are very large it's recommended to use rsync via SSH instead of web uploads to guarantee their integrity. After uploading to wesnoth.org it might save time to rsync to SF.net from there. </p><p>For uploading to wesnoth.org, you will need to ask the site administrators for help with setting up your SSH configuration, as well as determining the destination path for the files. </p> <pre># Upload to files.wesnoth.org (path for reference purposes only, # does not reflect actual server set-up). rsync -avP -e ssh &lt;FILES&gt; &lt;USERNAME&gt;@wesnoth.org:WWW/html/files/ # Upload to SF.net: # # * STREAM: replace with 'wesnoth' for development releases and # 'wesnoth-X.Y' for a stable release of the X.Y series. # * RELEASENAME: replace with the release name, e.g. # 'wesnoth-X.Y.Z'. rsync -avP -e ssh &lt;FILES&gt; &lt;USERNAME&gt;,wesnoth@frs.sourceforge.net:/home/frs/project/w/we/wesnoth/&lt;STREAM&gt;/&lt;RELEASENAME&gt; </pre> <h2><span class="mw-headline" id="Build_the_release_for_testing">Build the release for testing</span></h2> <p>You can build the release for testing while the upload is in progress. Before installing the test build make sure that no old leftover files are there, and also remove the old preferences or (preferably) use the <code>utils/wesnoth-defaults</code> script found in the repository to use a throwaway preferences dir. </p> <pre># Depending on whether you already compressed the tarball or not tar -xvf wesnoth-$VERSION.tar tar -xvf wesnoth-$VERSION.tar.bz2 cd wesnoth-$VERSION &amp;&amp; mkdir build &amp;&amp; cd build # CMake command to create a test build with suffix -X.Y.Z to be # installed to /opt/wesnoth-X.Y.Z instead of /usr/local cmake .. \ -DCMAKE_INSTALL_PREFIX=/opt/wesnoth-X.Y.Z \ -DENABLE_SERVER=TRUE \ -DENABLE_CAMPAIGN_SERVER=TRUE \ -DPREFERENCES_DIR=.wesnoth-X.Y.Z \ -DBINARY_SUFFIX=-X.Y.Z \ -DENABLE_NOTIFICATIONS=TRUE \ -DENABLE_STRICT_COMPILATION=TRUE # Build make -j&lt;N&gt; # install sudo make install </pre> <p>Now cd somewhere else and run the installed copy of the game (e.g. <code>/opt/wesnoth-X.Y.Z/bin/wesnoth</code>). Running right from the sources is <b>not</b> enough to be sure that everything works as expected. </p> <h2><span class="mw-headline" id="Test_the_build">Test the build</span></h2> <p>This at least includes the following: </p> <ul><li>Start the editor, check if creating a map is possible</li> <li>Start the game and try to connect to the official multiplayer server and to the add-on server</li> <li>Start the server, connect to it using the game to see if you can enter the lobby</li> <li>Check if in the game each campaign does start</li> <li>Check if you can start the in-game help and the credits</li> <li>Check if it is possible to create a local game</li> <li>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</li></ul> <p>If all of those points are working as expected, go on, if not, fix the problems and restart from the very beginning. </p> <h2><span class="mw-headline" id="Tagging_and_extra_release_related_steps">Tagging and extra release related steps</span></h2> <p>If everything works as expected, tag your release. Just use the version number (e.g. <code>1.13.2</code> or <code>1.14.0</code>) for the tag, no need to add <code>wesnoth-</code> in front: </p> <pre>git tag -a -m "Wesnoth $VERSION" $VERSION HEAD &amp;&amp; git push $VERSION </pre> <p>Update <a rel="nofollow" class="external text" href="http://www.wesnoth.org/macro-reference.html">macro-reference.html</a>: </p> <pre>cd data/tools/ make macro-reference.html scp macro-reference.html wesnoth@wesnoth.org:WWW/html/macro-reference.html </pre> <p>Regenerate the game credits and paste the contents to <a href="/Credits" title="Credits">Credits</a> on the wiki: </p> <pre>data/tools/about_cfg_to_wiki -w &lt;PATH TO GAME EXECUTABLE&gt; &gt; about.wiki </pre> <h2><span class="mw-headline" id="Alternative_post-tag_package_creation_method">Alternative post-tag package creation method</span></h2> <p>This method requires tagging release before generating tarballs and doing uploads. It involves running a single script but this script needs to be modified each time to update versions. It also requires existing tarball of previous release against which to create xdelta. </p> <pre> #!/bin/sh -xe VERSION=1.15.2 OLDVERSION=1.15.1 git checkout $VERSION git archive --format=tar --prefix="wesnoth-$VERSION/" $VERSION &gt; "wesnoth-$VERSION.tar" bunzip2 wesnoth-$OLDVERSION.tar.bz2 xdelta delta wesnoth-$OLDVERSION.tar wesnoth-$VERSION.tar wesnoth-$OLDVERSION.tar-wesnoth-$VERSION.tar.xdelta || true bzip2 wesnoth-$VERSION.tar sha256sum wesnoth-$VERSION.tar.bz2 &gt; wesnoth-$VERSION.tar.bz2.sha256 scp -P 10222 wesnoth-$VERSION.tar.bz2 wesnoth-$OLDVERSION.tar-wesnoth-$VERSION.tar.xdelta loonycyborg@wesnoth.org:/srv/www/html/files/ scp -P 10222 wesnoth-$VERSION.tar.bz2.sha256 YOUR_WESNOTH_ORG_USERNAME@wesnoth.org:/srv/www/html/files/releases/ rsync -avP -e ssh wesnoth-$VERSION.tar.bz2 wesnoth-$VERSION.tar.bz2.sha256 wesnoth-$OLDVERSION.tar-wesnoth-$VERSION.tar.xdelta YOUR_SF_USERNAME,wesnoth@frs.sourceforge.net:/home/frs/project/w/we/wesnoth/wesnoth/wesnoth-$VERSION/ </pre> <h2><span class="mw-headline" id="Notify_packagers">Notify packagers</span></h2> <p>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 packagers (especially path, dependencies, and other build-time changes), as well as the SHA256 checksum of the tarball attached. </p><p>For the current list of packagers, check <code>/scratch/packagers-list</code> on the files.wesnoth.org filesystem. </p><p><b>NOTE:</b> Make sure that our "tier 1" packagers (currently Windows and OS X) whose content is hosted by us on SF.net upload the SHA256 sums of their files to files.wesnoth.org/releases/ as well! </p><p><b>TODO:</b> Upload not just the sha256 files but also the actual files, as a backup in case sf.net is down etc </p> <h3><span class="mw-headline" id="Example_messages">Example messages</span></h3> <h4><span class="mw-headline" id="Development_version">Development version</span></h4> <pre>Subject: Wesnoth X.Y.Z is out! Hello, Wesnoth X.Y.Z, a new feature release in the X.Y.x development series, is out now. The sources are already available on SourceForge.net, and files.wesnoth.org (for backup or in case you don't trust the authenticity of the files on SF.net). We will announce the release within the next 72 hours. In the meantime you can create and upload your packages. Nothing has changed for packagers in terms of dependencies or install locations in this release. Thank you for your contribution to Wesnoth! </pre> <h4><span class="mw-headline" id="Stable_version">Stable version</span></h4> <pre>Subject: Wesnoth X.Y.Z is out! Hello, Wesnoth X.Y.Z, a new maintenance release in the X.Y.x stable series, is out now. The sources are already available on SourceForge.net, and files.wesnoth.org (for backup or in case you don't trust the authenticity of the files on SF.net). We will announce the release within the next 72 hours. In the meantime you can create and upload your packages. As this is a stable maintenance release, nothing has changed for packagers in terms of dependencies or install locations. Thank you for your contribution to Wesnoth! </pre> <h2><span class="mw-headline" id="Cleanup_and_post_release_steps">Cleanup and post release steps</span></h2> <p>Bump the version numbers in the files mentioned above in the release preparation steps and commit your changes. Consider deleting the test build, tarball, xdelta, etc. from your filesystem as needed. </p><p>Contact shadowm or Soliton to update the MP servers' configuration to allow users of the new release or rebuild the servers as needed (only required for development releases). </p><p>Update <a href="/TerrainCodeTableWML" title="TerrainCodeTableWML">TerrainCodeTableWML</a> with <code>data/tools/terrain2wiki.py</code>. </p> <h2><span class="mw-headline" id="The_real_announcement">The real announcement</span></h2> <p>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 hidden forum (edit, then copy &amp; paste). Edit the new copy to match the new release as needed, and leave it there for fixes and comments until the time for the real announcement comes. Make sure to use the items from <code>RELEASE_NOTES</code> (which you will purge after the final announcement is published). </p><p>You should also prepare the front page/News forum post in advance. </p><p>Wait until the announcement conditions are met (waited at least 24 hours and OS X and Windows builds are ready OR 72 hours passed). </p><p>When ready to make the announcement public, do the following: </p> <ul><li>Update <a href="/Download" title="Download">Download</a> in the wiki (currently takes the relevant contents from <a href="/Template:StableDownload" title="Template:StableDownload">Template:StableDownload</a> and <a href="/Template:DevDownload" title="Template:DevDownload">Template:DevDownload</a>).</li> <li>Post the contents of the new announcement post to the Release forum section as a new 'Announcement' topic.</li> <li>Set the previous announcement to a 'Normal' topic and lock it.</li> <li>Post the new News forum post to the News forum section.</li> <li>Update the wesnoth.org front page (yes, this has to be done by hand, I know, it sucks ― shadowm): <ul><li>Change versions, sizes, and links in the overview section to point to the latest version.</li> <li>Update the front page news section with an HTML version of the News forum post.</li> <li>If the front page news section is getting too large, remove some of the oldest posts.</li></ul></li> <li>Copy the new news to <a href="/Older_News" title="Older News">Older_News</a>.</li> <li>Update topics on IRC and post to social media (Twitter, etc.) as applicable.</li> <li>Clean up <code>RELEASE_NOTES</code> in the repository so it only contains the template for the next release.</li></ul> <!-- NewPP limit report Cached time: 20250219160454 Cache expiry: 86400 Dynamic content: false CPU time usage: 0.010 seconds Real time usage: 0.010 seconds Preprocessor visited node count: 74/1000000 Preprocessor generated node count: 80/1000000 Post‐expand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 2/40 Expensive parser function count: 0/100 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 0/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 0.000 1 -total --> </div> <!-- Saved in parser cache with key wiki-mw_:pcache:idhash:1496-0!canonical and timestamp 20250219160454 and revision id 74157 --> </div> <!-- end wikipage --> <div class="printfooter"> Retrieved from "<a dir="ltr" href="https://wiki.wesnoth.org/index.php?title=ReleasingWesnoth&amp;oldid=74157">https://wiki.wesnoth.org/index.php?title=ReleasingWesnoth&amp;oldid=74157</a>" </div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/Category:Development" title="Category:Development">Development</a></li></ul></div></div><div id="lastmod"> This page was last edited on 7 February 2025, at 07:20.</div> <div class="visualClear"></div> </div> <!-- bodyContent --> </div> <!-- end content --> </div> <!-- end main --> <div id="footer-sep"></div> <div id="footer"><div id="footer-content"><div> <a href="https://wiki.wesnoth.org/StartingPoints">Site Map</a> &#8226; <a href="https://status.wesnoth.org/">Site Status</a><br /> Copyright &copy; 2003&ndash;2024 by <a rel="author" href="https://wiki.wesnoth.org/Project">The Battle for Wesnoth Project</a> — Powered by <a href="https://www.mediawiki.org/">MediaWiki</a><br /> Site design Copyright &copy; 2017&ndash;2024 by Iris Morelle </div></div></div> <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.010","walltime":"0.010","ppvisitednodes":{"value":74,"limit":1000000},"ppgeneratednodes":{"value":80,"limit":1000000},"postexpandincludesize":{"value":0,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":2,"limit":40},"expensivefunctioncount":{"value":0,"limit":100},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"timingprofile":["100.00% 0.000 1 -total"]},"cachereport":{"timestamp":"20250219160454","ttl":86400,"transientcontent":false}}});});</script><script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":85});});</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10