| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | 
 | 2 | <html lang="en"> | 
 | 3 | <head> | 
 | 4 |   <meta http-equiv="content-type" content="text/html; charset=utf-8"> | 
| Emil Velikov | 028d29b | 2016-11-28 17:22:15 +0000 | [diff] [blame] | 5 |   <title>Releasing process</title> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 6 |   <link rel="stylesheet" type="text/css" href="mesa.css"> | 
 | 7 | </head> | 
 | 8 | <body> | 
 | 9 |  | 
 | 10 | <div class="header"> | 
 | 11 |   <h1>The Mesa 3D Graphics Library</h1> | 
 | 12 | </div> | 
 | 13 |  | 
 | 14 | <iframe src="contents.html"></iframe> | 
 | 15 | <div class="content"> | 
 | 16 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 17 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 18 | <h1>Releasing process</h1> | 
 | 19 |  | 
 | 20 | <ul> | 
 | 21 | <li><a href="#overview">Overview</a> | 
 | 22 | <li><a href="#schedule">Release schedule</a> | 
 | 23 | <li><a href="#pickntest">Cherry-pick and test</a> | 
 | 24 | <li><a href="#branch">Making a branchpoint</a> | 
 | 25 | <li><a href="#prerelease">Pre-release announcement</a> | 
 | 26 | <li><a href="#release">Making a new release</a> | 
 | 27 | <li><a href="#announce">Announce the release</a> | 
 | 28 | <li><a href="#website">Update the mesa3d.org website</a> | 
 | 29 | <li><a href="#bugzilla">Update Bugzilla</a> | 
 | 30 | </ul> | 
 | 31 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 32 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 33 | <h1 id="overview">Overview</h1> | 
 | 34 |  | 
 | 35 | <p> | 
 | 36 | This document uses the convention X.Y.Z for the release number with X.Y being | 
 | 37 | the stable branch name. | 
 | 38 | <br> | 
 | 39 | Mesa provides feature and bugfix releases. Former use zero as patch version (Z), | 
 | 40 | while the latter have a non-zero one. | 
 | 41 | </p> | 
 | 42 |  | 
 | 43 | <p> | 
 | 44 | For example: | 
 | 45 | </p> | 
 | 46 | <pre> | 
 | 47 | 	Mesa 10.1.0 - 10.1 branch, feature | 
 | 48 | 	Mesa 10.1.4 - 10.1 branch, bugfix | 
 | 49 | 	Mesa 12.0.0 - 12.0 branch, feature | 
 | 50 | 	Mesa 12.0.2 - 12.0 branch, bugfix | 
 | 51 | </pre> | 
 | 52 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 53 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 54 | <h1 id="schedule">Release schedule</h1> | 
 | 55 |  | 
 | 56 | <p> | 
 | 57 | Releases should happen on Fridays. Delays can occur although those should be keep | 
 | 58 | to a minimum. | 
| Emil Velikov | e5c24ad | 2017-04-24 17:22:19 +0100 | [diff] [blame] | 59 | <br> | 
 | 60 | See our <a href="release-calendar.html" target="_parent">calendar</a> for the | 
 | 61 | date and other details for individual releases. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 62 | </p> | 
 | 63 |  | 
 | 64 | <h2>Feature releases</h2> | 
 | 65 | <ul> | 
| Eric Engestrom | 077879c | 2017-02-26 23:58:03 +0000 | [diff] [blame] | 66 | <li>Available approximately every three months. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 67 | <li>Initial timeplan available 2-4 weeks before the planned branchpoint (rc1) | 
 | 68 | on the mesa-announce@ mailing list. | 
 | 69 | <li>A <a href="#prerelease">pre-release</a> announcement should be available | 
| Eric Engestrom | 077879c | 2017-02-26 23:58:03 +0000 | [diff] [blame] | 70 | approximately 24 hours before the final (non-rc) release. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 71 | </ul> | 
 | 72 |  | 
 | 73 | <h2>Stable releases</h2> | 
 | 74 | <ul> | 
 | 75 | <li>Normally available once every two weeks. | 
 | 76 | <li>Only the latest branch has releases. See note below. | 
 | 77 | <li>A <a href="#prerelease">pre-release</a> announcement should be available | 
| Eric Engestrom | 077879c | 2017-02-26 23:58:03 +0000 | [diff] [blame] | 78 | approximately 48 hours before the actual release. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 79 | </ul> | 
 | 80 |  | 
 | 81 | <p> | 
 | 82 | Note: There is one or two releases overlap when changing branches. For example: | 
 | 83 | <br> | 
 | 84 | The final release from the 12.0 series Mesa 12.0.5 will be out around the same | 
 | 85 | time (or shortly after) 13.0.1 is out. | 
 | 86 | </p> | 
 | 87 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 88 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 89 | <h1 id="pickntest">Cherry-picking and testing</h1> | 
 | 90 |  | 
 | 91 | <p> | 
 | 92 | Commits nominated for the active branch are picked as based on the | 
 | 93 | <a href="submittingpatches.html#criteria" target="_parent">criteria</a> as | 
 | 94 | described in the same section. | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 95 | </p> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 96 |  | 
 | 97 | <p> | 
| Andres Gomez | 8058707 | 2017-03-27 21:48:11 +0300 | [diff] [blame] | 98 | Nomination happens in the mesa-stable@ mailing list. However, | 
 | 99 | maintainer is resposible of checking for forgotten candidates in the | 
 | 100 | master branch. This is achieved by a combination of ad-hoc scripts and | 
 | 101 | a casual search for terms such as regression, fix, broken and similar. | 
 | 102 | </p> | 
 | 103 |  | 
 | 104 | <p> | 
 | 105 | Maintainer is also responsible for testing in various possible permutations of | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 106 | the autoconf and scons build. | 
 | 107 | </p> | 
 | 108 |  | 
 | 109 | <h2>Cherry-picking and build/check testing</h2> | 
 | 110 |  | 
 | 111 | <p>Done continuously up-to the <a href="#prerelease">pre-release</a> announcement.</p> | 
 | 112 |  | 
 | 113 | <p> | 
 | 114 | As an exception, patches can be applied up-to the last ~1h before the actual | 
 | 115 | release. This is made <strong>only</strong> with explicit permission/request, | 
 | 116 | and the patch <strong>must</strong> be very well contained. Thus it cannot | 
 | 117 | affect more than one driver/subsystem. | 
 | 118 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 119 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 120 | <p> | 
 | 121 | Currently Ilia Mirkin and AMD devs have requested "permanent" exception. | 
 | 122 | </p> | 
 | 123 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 124 | <ul> | 
 | 125 | <li>make distcheck, scons and scons check must pass | 
 | 126 | <li>Testing with different version of system components - LLVM and others is also | 
 | 127 | performed where possible. | 
| Andres Gomez | 8a3e33a | 2017-03-27 21:48:12 +0300 | [diff] [blame] | 128 | <li>As a general rule, testing with various combinations of configure | 
 | 129 | switches, depending on the specific patchset. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 130 | </ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 131 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 132 | <p> | 
| Andres Gomez | 8a3e33a | 2017-03-27 21:48:12 +0300 | [diff] [blame] | 133 | Achieved by combination of local ad-hoc scripts, mingw-w64 cross | 
 | 134 | compilation and AppVeyor plus Travis-CI, the latter as part of their | 
 | 135 | Github integration. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 136 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 137 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 138 | <p> | 
| Andres Gomez | 029d7be | 2017-05-03 21:14:38 +0300 | [diff] [blame] | 139 | For Windows related changes, the main contact point is Brian | 
 | 140 | Paul. Jose Fonseca can also help as a fallback contact. | 
 | 141 | </p> | 
 | 142 |  | 
 | 143 | <p> | 
| Andres Gomez | 2be0a99 | 2017-05-05 12:44:16 +0300 | [diff] [blame] | 144 | For Android related changes, the main contact is Tapani | 
 | 145 | Pälli. Mauro Rossi is collaborating with android-x86 and may | 
 | 146 | provide feedback about the build status in that project. | 
 | 147 | </p> | 
 | 148 |  | 
 | 149 | <p> | 
| Andres Gomez | 9c70537 | 2017-03-27 21:48:16 +0300 | [diff] [blame] | 150 | For MacOSX related changes, Jeremy Huddleston Sequoia is currently a | 
 | 151 | good contact point. | 
 | 152 | </p> | 
 | 153 |  | 
 | 154 | <p> | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 155 | <strong>Note:</strong> If a patch in the current queue needs any additional | 
 | 156 | fix(es), then they should be squashed together. | 
 | 157 | <br> | 
 | 158 | The commit messages and the <code>cherry picked from</code> tags must be preserved. | 
 | 159 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 160 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 161 | <p> | 
 | 162 | This should be noted in the <a href="#prerelease">pre-announce</a> email. | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 163 | </p> | 
 | 164 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 165 | <pre> | 
 | 166 |     git show b10859ec41d09c57663a258f43fe57c12332698e | 
 | 167 |  | 
 | 168 |     commit b10859ec41d09c57663a258f43fe57c12332698e | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 169 |     Author: Jonas Pfeil <pfeiljonas@gmx.de> | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 170 |     Date:   Wed Mar 1 18:11:10 2017 +0100 | 
 | 171 |  | 
 | 172 |         ralloc: Make sure ralloc() allocations match malloc()'s alignment. | 
 | 173 |  | 
 | 174 |         The header of ralloc needs to be aligned, because the compiler assumes | 
 | 175 |         ... | 
 | 176 |  | 
 | 177 |         (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14) | 
 | 178 |  | 
 | 179 |         Squashed with commit: | 
 | 180 |  | 
 | 181 |         ralloc: don't leave out the alignment factor | 
 | 182 |  | 
 | 183 |         Experimentation shows that without alignment factor gcc and clang choose | 
 | 184 |         ... | 
 | 185 |  | 
 | 186 |         (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126) | 
 | 187 | </pre> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 188 |  | 
 | 189 | <h2>Regression/functionality testing</h2> | 
 | 190 |  | 
 | 191 | <p> | 
 | 192 | Less often (once or twice), shortly before the pre-release announcement. | 
 | 193 | Ensure that testing is redone if Intel devs have requested an exception, as per above. | 
 | 194 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 195 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 196 | <ul> | 
 | 197 | <li><em>no regressions should be observed for Piglit/dEQP/CTS/Vulkan on Intel platforms</em> | 
 | 198 | <li><em>no regressions should be observed for Piglit using the swrast, softpipe | 
 | 199 | and llvmpipe drivers</em> | 
 | 200 | </ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 201 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 202 | <p> | 
 | 203 | Currently testing is performed courtesy of the Intel OTC team and their Jenkins CI setup. Check with the Intel team over IRC how to get things setup. | 
 | 204 | </p> | 
 | 205 |  | 
| Andres Gomez | fcdc96d | 2017-03-27 21:48:13 +0300 | [diff] [blame] | 206 | <p> | 
 | 207 | Installing the built driver from the pre-announced RC branch in the | 
 | 208 | system and making some every day's use until the release may be a good | 
 | 209 | idea too. | 
 | 210 | </p> | 
 | 211 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 212 |  | 
 | 213 | <h1 id="branch">Making a branchpoint</h1> | 
 | 214 |  | 
 | 215 | <p> | 
 | 216 | A branchpoint is made such that new development can continue in parallel to | 
 | 217 | stabilisation and bugfixing. | 
 | 218 | </p> | 
 | 219 |  | 
 | 220 | <p> | 
 | 221 | Note: Before doing a branch ensure that basic build and <code>make check</code> | 
 | 222 | testing is done and there are little to-no issues. | 
 | 223 | <br> | 
 | 224 | Ideally all of those should be tackled already. | 
 | 225 | </p> | 
 | 226 |  | 
 | 227 | <p> | 
 | 228 | Check if the version number is going to remain as, alternatively | 
 | 229 | <code> git mv docs/relnotes/{current,new}.html </code> as appropriate. | 
 | 230 | </p> | 
 | 231 |  | 
 | 232 | <p> | 
 | 233 | To setup the branchpoint: | 
 | 234 | </p> | 
 | 235 | <pre> | 
 | 236 | 	git checkout master # make sure we're in master first | 
 | 237 | 	git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint" | 
 | 238 | 	git checkout -b X.Y | 
| Emil Velikov | 0f8afde | 2017-01-19 15:35:38 +0000 | [diff] [blame] | 239 | 	git checkout master | 
 | 240 | 	$EDITOR VERSION # bump the version number | 
 | 241 | 	git commit -as | 
| Emil Velikov | 1d104f9 | 2017-01-26 19:26:13 +0000 | [diff] [blame] | 242 | 	cp docs/relnotes/{X.Y,X.Y+1}.html # copy/create relnotes template | 
 | 243 | 	git commit -as | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 244 | 	git push origin X.Y-branchpoint X.Y | 
 | 245 | </pre> | 
 | 246 |  | 
 | 247 | <p> | 
 | 248 | Now go to | 
 | 249 | <a href="https://bugs.freedesktop.org/editversions.cgi?action=add&product=Mesa" target="_parent">Bugzilla</a> and add the new Mesa version X.Y. | 
 | 250 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 251 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 252 | <p> | 
| Emil Velikov | 383e8e2 | 2017-02-20 19:27:49 +0000 | [diff] [blame] | 253 | Check that there are no distribution breaking changes and revert them if needed. | 
 | 254 | For example: files being overwritten on install, etc. Happens extremely rarely - | 
 | 255 | we had only one case so far (see commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04). | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 256 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 257 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 258 | <p> | 
 | 259 | Proceed to <a href="#release">release</a> -rc1. | 
 | 260 | </p> | 
 | 261 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 262 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 263 | <h1 id="prerelease">Pre-release announcement</h1> | 
 | 264 |  | 
 | 265 | <p> | 
 | 266 | It comes shortly after outstanding patches in the respective branch are pushed. | 
 | 267 | Developers can check, in brief, what's the status of their patches. They, | 
 | 268 | alongside very early testers, are strongly encouraged to test the branch and | 
 | 269 | report any regressions. | 
 | 270 | <br> | 
 | 271 | It is followed by a brief period (normally 24 or 48 hours) before the actual | 
 | 272 | release is made. | 
 | 273 | </p> | 
 | 274 |  | 
 | 275 | <h2>Terminology used</h2> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 276 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 277 | <ul><li>Nominated</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 278 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 279 | <p> | 
 | 280 | Patch that is nominated but yet to to merged in the patch queue/branch. | 
 | 281 | </p> | 
 | 282 |  | 
 | 283 | <ul><li>Queued</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 284 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 285 | <p> | 
 | 286 | Patch is in the queue/branch and will feature in the next release. | 
 | 287 | Barring reported regressions or objections from developers. | 
 | 288 | </p> | 
 | 289 |  | 
 | 290 | <ul><li>Rejected</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 291 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 292 | <p> | 
 | 293 | Patch does not fit the | 
 | 294 | <a href="submittingpatches.html#criteria" target="_parent">criteria</a> and | 
 | 295 | is followed by a brief information. | 
 | 296 | <br> | 
 | 297 | The release maintainer is human so if you believe you've spotted a mistake do | 
 | 298 | let them know. | 
 | 299 | </p> | 
 | 300 |  | 
 | 301 | <h2>Format/template</h2> | 
 | 302 | <pre> | 
 | 303 | Subject: [ANNOUNCE] Mesa X.Y.Z release candidate | 
 | 304 | To: mesa-announce@... | 
 | 305 | Cc: mesa-dev@... | 
 | 306 |  | 
 | 307 | Hello list, | 
 | 308 |  | 
 | 309 | The candidate for the Mesa X.Y.Z is now available. Currently we have: | 
 | 310 |  - NUMBER queued | 
 | 311 |  - NUMBER nominated (outstanding) | 
 | 312 |  - and NUMBER rejected patches | 
 | 313 |  | 
 | 314 | BRIEF SUMMARY OF CHANGES | 
 | 315 |  | 
 | 316 | Take a look at section "Mesa stable queue" for more information. | 
 | 317 |  | 
 | 318 |  | 
 | 319 | Testing reports/general approval | 
 | 320 | -------------------------------- | 
 | 321 | Any testing reports (or general approval of the state of the branch) will be | 
 | 322 | greatly appreciated. | 
 | 323 |  | 
 | 324 | The plan is to have X.Y.Z this DAY (DATE), around or shortly after TIME. | 
 | 325 |  | 
 | 326 | If you have any questions or suggestions - be that about the current patch | 
 | 327 | queue or otherwise, please go ahead. | 
 | 328 |  | 
 | 329 |  | 
 | 330 | Trivial merge conflicts | 
 | 331 | ----------------------- | 
 | 332 | List of commits where manual intervention was required. | 
 | 333 | Keep the authors in the CC list. | 
 | 334 |  | 
 | 335 | commit SHA | 
 | 336 | Author: AUTHOR | 
 | 337 |  | 
 | 338 |     COMMIT SUMMARY | 
 | 339 |  | 
 | 340 |     CHERRY PICKED FROM | 
 | 341 |  | 
 | 342 |  | 
 | 343 | For example: | 
 | 344 |  | 
 | 345 | commit 990f395e007c3204639daa34efc3049f350ee819 | 
 | 346 | Author: Emil Velikov <emil.velikov@collabora.com> | 
 | 347 |  | 
 | 348 |     anv: automake: cleanup the generated json file during make clean | 
 | 349 |  | 
 | 350 |     (cherry picked from commit 8df581520a823564be0ab5af7dbb7d501b1c9670) | 
 | 351 |  | 
 | 352 |  | 
 | 353 | Cheers, | 
 | 354 | Emil | 
 | 355 |  | 
 | 356 |  | 
 | 357 | Mesa stable queue | 
 | 358 | ----------------- | 
 | 359 |  | 
 | 360 | Nominated (NUMBER) | 
 | 361 | ================== | 
 | 362 |  | 
 | 363 | AUTHOR (NUMBER): | 
 | 364 |       SHA     COMMIT SUMMARY | 
 | 365 |  | 
 | 366 | For example: | 
 | 367 |  | 
 | 368 | Dave Airlie (1): | 
 | 369 |       2de85eb radv: fix texturesamples to handle single sample case | 
 | 370 |  | 
 | 371 |  | 
 | 372 | Queued (NUMBER) | 
 | 373 | =============== | 
 | 374 |  | 
 | 375 | AUTHOR (NUMBER): | 
 | 376 |       COMMIT SUMMARY | 
 | 377 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 378 | For example: | 
 | 379 |  | 
 | 380 | Jonas Pfeil (1): | 
 | 381 |       ralloc: Make sure ralloc() allocations match malloc()'s alignment. | 
 | 382 | Squashed with | 
 | 383 |       ralloc: don't leave out the alignment factor | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 384 |  | 
 | 385 | Rejected (NUMBER) | 
 | 386 | ================= | 
 | 387 |  | 
 | 388 | Rejected (11) | 
 | 389 | ============= | 
 | 390 |  | 
 | 391 | AUTHOR (NUMBER): | 
 | 392 |       SHA     COMMIT SUMMARY | 
 | 393 |  | 
 | 394 | Reason: ... | 
 | 395 | </pre> | 
 | 396 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 397 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 398 | <h1 id="release">Making a new release</h1> | 
 | 399 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 400 | <p> | 
 | 401 | These are the instructions for making a new Mesa release. | 
 | 402 | </p> | 
 | 403 |  | 
 | 404 | <h3>Get latest source files</h3> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 405 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 406 | <p> | 
 | 407 | Ensure the latest code is available - both in your local master and the | 
 | 408 | relevant branch. | 
 | 409 | </p> | 
 | 410 |  | 
 | 411 | <h3>Perform basic testing</h3> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 412 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 413 | <p> | 
 | 414 | Most of the testing should already be done during the | 
 | 415 | <a href="#pickntest">cherry-pick</a> and | 
 | 416 | <a href="#prerelease">pre-announce</a> stages. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 417 | So we do a quick 'touch test' | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 418 | </p> | 
 | 419 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 420 | <ul> | 
 | 421 | <li>make distcheck (you can omit this if you're not using --dist below) | 
 | 422 | <li>scons (from release tarball) | 
 | 423 | <li>the produced binaries work | 
 | 424 | </ul> | 
 | 425 |  | 
 | 426 | <p> | 
 | 427 | Here is one solution that I've been using. | 
 | 428 | </p> | 
 | 429 |  | 
 | 430 | <pre> | 
| Emil Velikov | 0f24660 | 2017-09-04 17:08:15 +0100 | [diff] [blame] | 431 | 	# Set MAKEFLAGS if you haven't already | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 432 | 	git clean -fXd; git clean -nxd | 
 | 433 | 	read # quick cross check any outstanding files | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 434 | 	export __version=`cat VERSION` | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 435 | 	export __mesa_root=../ | 
 | 436 | 	export __build_root=./foo | 
 | 437 | 	chmod 755 -fR $__build_root; rm -rf $__build_root | 
 | 438 | 	mkdir -p $__build_root && cd $__build_root | 
 | 439 |  | 
| Emil Velikov | cf6e6eb | 2017-09-04 17:19:43 +0100 | [diff] [blame^] | 440 | 	# For the native builds - such as distcheck, scons, sanity test, you | 
 | 441 | 	# may want to specify which LLVM to use: | 
| Andres Gomez | 8c1d87b | 2017-07-08 22:59:38 +0300 | [diff] [blame] | 442 | 	# export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config | 
| Emil Velikov | cf6e6eb | 2017-09-04 17:19:43 +0100 | [diff] [blame^] | 443 |  | 
 | 444 | 	# Do a full distcheck | 
| Emil Velikov | 0f24660 | 2017-09-04 17:08:15 +0100 | [diff] [blame] | 445 | 	$__mesa_root/autogen.sh && make distcheck | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 446 |  | 
| Emil Velikov | f9b18d5 | 2017-02-01 08:42:14 +0000 | [diff] [blame] | 447 | 	# Build check the tarballs (scons, linux) | 
 | 448 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
 | 449 | 	scons | 
 | 450 | 	cd .. && rm -rf mesa-$__version | 
 | 451 |  | 
 | 452 | 	# Build check the tarballs (scons, windows/mingw) | 
| Emil Velikov | cf6e6eb | 2017-09-04 17:19:43 +0100 | [diff] [blame^] | 453 | 	# Temporary drop LLVM_CONFIG, unless you have a Windows/mingw one. | 
 | 454 | 	# save_LLVM_CONFIG=`echo $LLVM_CONFIG`; unset LLVM_CONFIG | 
| Emil Velikov | f9b18d5 | 2017-02-01 08:42:14 +0000 | [diff] [blame] | 455 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
 | 456 | 	scons platform=windows toolchain=crossmingw | 
 | 457 | 	cd .. && rm -rf mesa-$__version | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 458 |  | 
 | 459 | 	# Test the automake binaries | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 460 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
| Emil Velikov | cf6e6eb | 2017-09-04 17:19:43 +0100 | [diff] [blame^] | 461 | 	# Restore LLVM_CONFIG, if applicable: | 
 | 462 | 	# export LLVM_CONFIG=`echo $save_LLVM_CONFIG`; unset save_LLVM_CONFIG | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 463 | 	./configure \ | 
 | 464 | 		--with-dri-drivers=i965,swrast \ | 
 | 465 | 		--with-gallium-drivers=swrast \ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 466 | 		--with-vulkan-drivers=intel \ | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 467 | 		--enable-llvm-shared-libs \ | 
| Emil Velikov | b3b4156 | 2017-02-07 15:53:14 +0000 | [diff] [blame] | 468 | 		--enable-llvm \ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 469 | 		--enable-glx-tls \ | 
 | 470 | 		--enable-gbm \ | 
 | 471 | 		--enable-egl \ | 
| Emil Velikov | 2d35773 | 2017-04-25 16:39:52 +0100 | [diff] [blame] | 472 | 		--with-platforms=x11,drm,wayland,surfaceless | 
| Emil Velikov | 0f24660 | 2017-09-04 17:08:15 +0100 | [diff] [blame] | 473 | 	make && DESTDIR=`pwd`/test make install | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 474 | 	__glxinfo_cmd='glxinfo 2>&1 | egrep -o "Mesa.*|Gallium.*|.*dri\.so"' | 
 | 475 | 	__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"' | 
 | 476 | 	__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"' | 
 | 477 | 	__es2gears_cmd='es2gears_x11 2>&1 | grep -v "configuration file"' | 
| Andres Gomez | e6f4556 | 2017-07-08 22:59:40 +0300 | [diff] [blame] | 478 | 	test "x$LD_LIBRARY_PATH" != 'x' && __old_ld="$LD_LIBRARY_PATH" | 
 | 479 | 	export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/:"${__old_ld}" | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 480 | 	export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 481 | 	export LIBGL_DEBUG=verbose | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 482 | 	eval $__glxinfo_cmd | 
 | 483 | 	eval $__glxgears_cmd | 
 | 484 | 	eval $__es2info_cmd | 
 | 485 | 	eval $__es2gears_cmd | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 486 | 	export LIBGL_ALWAYS_SOFTWARE=1 | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 487 | 	eval $__glxinfo_cmd | 
 | 488 | 	eval $__glxgears_cmd | 
 | 489 | 	eval $__es2info_cmd | 
 | 490 | 	eval $__es2gears_cmd | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 491 | 	export LIBGL_ALWAYS_SOFTWARE=1 | 
 | 492 | 	export GALLIUM_DRIVER=softpipe | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 493 | 	eval $__glxinfo_cmd | 
 | 494 | 	eval $__glxgears_cmd | 
 | 495 | 	eval $__es2info_cmd | 
 | 496 | 	eval $__es2gears_cmd | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 497 | 	# Smoke test DOTA2 | 
 | 498 | 	unset LD_LIBRARY_PATH | 
| Andres Gomez | e6f4556 | 2017-07-08 22:59:40 +0300 | [diff] [blame] | 499 | 	test "x$__old_ld" != 'x' && export LD_LIBRARY_PATH="$__old_ld" && unset __old_ld | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 500 | 	unset LIBGL_DRIVERS_PATH | 
 | 501 | 	unset LIBGL_DEBUG | 
 | 502 | 	unset LIBGL_ALWAYS_SOFTWARE | 
 | 503 | 	export VK_ICD_FILENAMES=`pwd`/src/intel/vulkan/dev_icd.json | 
 | 504 | 	steam steam://rungameid/570  -vconsole -vulkan | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 505 | </pre> | 
 | 506 |  | 
 | 507 | <h3>Update version in file VERSION</h3> | 
 | 508 |  | 
 | 509 | <p> | 
 | 510 | Increment the version contained in the file VERSION at Mesa's top-level, then | 
 | 511 | commit this change. | 
 | 512 | </p> | 
 | 513 |  | 
 | 514 | <h3>Create release notes for the new release</h3> | 
 | 515 |  | 
 | 516 | <p> | 
 | 517 | Create a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous | 
 | 518 | release notes). Note that the sha256sums section of the release notes should | 
 | 519 | be empty (TBD) at this point. | 
 | 520 | </p> | 
 | 521 |  | 
 | 522 | <p> | 
 | 523 | Two scripts are available to help generate portions of the release notes: | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 524 | </p> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 525 |  | 
 | 526 | <pre> | 
 | 527 | 	./bin/bugzilla_mesa.sh | 
 | 528 | 	./bin/shortlog_mesa.sh | 
 | 529 | </pre> | 
 | 530 |  | 
 | 531 | <p> | 
 | 532 | The first script identifies commits that reference bugzilla bugs and obtains | 
 | 533 | the descriptions of those bugs from bugzilla. The second script generates a | 
 | 534 | log of all commits. In both cases, HTML-formatted lists are printed to stdout | 
 | 535 | to be included in the release notes. | 
 | 536 | </p> | 
 | 537 |  | 
 | 538 | <p> | 
 | 539 | Commit these changes and push the branch. | 
 | 540 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 541 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 542 | <pre> | 
 | 543 | 	git push origin HEAD | 
 | 544 | </pre> | 
 | 545 |  | 
 | 546 |  | 
| Emil Velikov | 0f988ad | 2017-03-15 17:34:25 +0000 | [diff] [blame] | 547 | <h3>Use the release.sh script from xorg <a href="https://cgit.freedesktop.org/xorg/util/modular/">util-modular</a></h3> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 548 |  | 
 | 549 | <p> | 
| Emil Velikov | 7956203 | 2017-03-15 17:34:24 +0000 | [diff] [blame] | 550 | Start the release process. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 551 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 552 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 553 | <pre> | 
| Andres Gomez | 8c1d87b | 2017-07-08 22:59:38 +0300 | [diff] [blame] | 554 | 	# For the dist/distcheck, you may want to specify which LLVM to use: | 
 | 555 | 	# export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 556 | 	../relative/path/to/release.sh . # append --dist if you've already done distcheck above | 
 | 557 | </pre> | 
 | 558 |  | 
 | 559 | <p> | 
 | 560 | Pay close attention to the prompts as you might be required to enter your GPG | 
 | 561 | and SSH passphrase(s) to sign and upload the files, respectively. | 
 | 562 | </p> | 
 | 563 |  | 
 | 564 | <h3>Add the sha256sums to the release notes</h3> | 
 | 565 |  | 
 | 566 | <p> | 
| Eric Engestrom | 077879c | 2017-02-26 23:58:03 +0000 | [diff] [blame] | 567 | Edit docs/relnotes/X.Y.Z.html to add the sha256sums as available in the mesa-X.Y.Z.announce template. Commit this change. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 568 | </p> | 
 | 569 |  | 
 | 570 | <h3>Back on mesa master, add the new release notes into the tree</h3> | 
 | 571 |  | 
 | 572 | <p> | 
 | 573 | Something like the following steps will do the trick: | 
 | 574 | </p> | 
 | 575 |  | 
 | 576 | <pre> | 
 | 577 | 	git cherry-pick -x X.Y~1 | 
 | 578 | 	git cherry-pick -x X.Y | 
 | 579 | </pre> | 
 | 580 |  | 
 | 581 | <p> | 
| Andres Gomez | 80a0c97 | 2017-07-08 22:59:41 +0300 | [diff] [blame] | 582 | Also, edit docs/relnotes.html to add a link to the new release notes, | 
 | 583 | edit docs/index.html to add a news entry, and remove the version from | 
 | 584 | docs/release-calendar.html. Then commit and push: | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 585 | </p> | 
 | 586 |  | 
 | 587 | <pre> | 
| Andres Gomez | 80a0c97 | 2017-07-08 22:59:41 +0300 | [diff] [blame] | 588 | 	git commit -as -m "docs: update calendar, add news item and link release notes for X.Y.Z" | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 589 | 	git push origin master X.Y | 
 | 590 | </pre> | 
 | 591 |  | 
 | 592 |  | 
 | 593 | <h1 id="announce">Announce the release</h1> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 594 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 595 | <p> | 
 | 596 | Use the generated template during the releasing process. | 
 | 597 | </p> | 
 | 598 |  | 
 | 599 |  | 
 | 600 | <h1 id="website">Update the mesa3d.org website</h1> | 
 | 601 |  | 
 | 602 | <p> | 
| Emil Velikov | e280a6b | 2017-02-10 12:51:22 +0000 | [diff] [blame] | 603 | As the hosting was moved to freedesktop, git hooks are deployed to update the | 
 | 604 | website. Manually check that it is updated 5-10 minutes after the final <code>git push</code> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 605 | </p> | 
 | 606 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 607 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 608 | <h1 id="bugzilla">Update Bugzilla</h1> | 
 | 609 |  | 
 | 610 | <p> | 
 | 611 | Parse through the bugreports as listed in the docs/relnotes/X.Y.Z.html | 
 | 612 | document. | 
 | 613 | <br> | 
 | 614 | If there's outstanding action, close the bug referencing the commit ID which | 
 | 615 | addresses the bug and mention the Mesa version that has the fix. | 
 | 616 | </p> | 
 | 617 |  | 
 | 618 | <p> | 
 | 619 | Note: the above is not applicable to all the reports, so use common sense. | 
 | 620 | </p> | 
 | 621 |  | 
 | 622 |  | 
 | 623 | </div> | 
 | 624 | </body> | 
 | 625 | </html> |