| 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> | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 150 | <strong>Note:</strong> If a patch in the current queue needs any additional | 
 | 151 | fix(es), then they should be squashed together. | 
 | 152 | <br> | 
 | 153 | The commit messages and the <code>cherry picked from</code> tags must be preserved. | 
 | 154 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 155 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 156 | <p> | 
 | 157 | 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] | 158 | </p> | 
 | 159 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 160 | <pre> | 
 | 161 |     git show b10859ec41d09c57663a258f43fe57c12332698e | 
 | 162 |  | 
 | 163 |     commit b10859ec41d09c57663a258f43fe57c12332698e | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 164 |     Author: Jonas Pfeil <pfeiljonas@gmx.de> | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 165 |     Date:   Wed Mar 1 18:11:10 2017 +0100 | 
 | 166 |  | 
 | 167 |         ralloc: Make sure ralloc() allocations match malloc()'s alignment. | 
 | 168 |  | 
 | 169 |         The header of ralloc needs to be aligned, because the compiler assumes | 
 | 170 |         ... | 
 | 171 |  | 
 | 172 |         (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14) | 
 | 173 |  | 
 | 174 |         Squashed with commit: | 
 | 175 |  | 
 | 176 |         ralloc: don't leave out the alignment factor | 
 | 177 |  | 
 | 178 |         Experimentation shows that without alignment factor gcc and clang choose | 
 | 179 |         ... | 
 | 180 |  | 
 | 181 |         (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126) | 
 | 182 | </pre> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 183 |  | 
 | 184 | <h2>Regression/functionality testing</h2> | 
 | 185 |  | 
 | 186 | <p> | 
 | 187 | Less often (once or twice), shortly before the pre-release announcement. | 
 | 188 | Ensure that testing is redone if Intel devs have requested an exception, as per above. | 
 | 189 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 190 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 191 | <ul> | 
 | 192 | <li><em>no regressions should be observed for Piglit/dEQP/CTS/Vulkan on Intel platforms</em> | 
 | 193 | <li><em>no regressions should be observed for Piglit using the swrast, softpipe | 
 | 194 | and llvmpipe drivers</em> | 
 | 195 | </ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 196 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 197 | <p> | 
 | 198 | 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. | 
 | 199 | </p> | 
 | 200 |  | 
| Andres Gomez | fcdc96d | 2017-03-27 21:48:13 +0300 | [diff] [blame] | 201 | <p> | 
 | 202 | Installing the built driver from the pre-announced RC branch in the | 
 | 203 | system and making some every day's use until the release may be a good | 
 | 204 | idea too. | 
 | 205 | </p> | 
 | 206 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 207 |  | 
 | 208 | <h1 id="branch">Making a branchpoint</h1> | 
 | 209 |  | 
 | 210 | <p> | 
 | 211 | A branchpoint is made such that new development can continue in parallel to | 
 | 212 | stabilisation and bugfixing. | 
 | 213 | </p> | 
 | 214 |  | 
 | 215 | <p> | 
 | 216 | Note: Before doing a branch ensure that basic build and <code>make check</code> | 
 | 217 | testing is done and there are little to-no issues. | 
 | 218 | <br> | 
 | 219 | Ideally all of those should be tackled already. | 
 | 220 | </p> | 
 | 221 |  | 
 | 222 | <p> | 
 | 223 | Check if the version number is going to remain as, alternatively | 
 | 224 | <code> git mv docs/relnotes/{current,new}.html </code> as appropriate. | 
 | 225 | </p> | 
 | 226 |  | 
 | 227 | <p> | 
 | 228 | To setup the branchpoint: | 
 | 229 | </p> | 
 | 230 | <pre> | 
 | 231 | 	git checkout master # make sure we're in master first | 
 | 232 | 	git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint" | 
 | 233 | 	git checkout -b X.Y | 
| Emil Velikov | 0f8afde | 2017-01-19 15:35:38 +0000 | [diff] [blame] | 234 | 	git checkout master | 
 | 235 | 	$EDITOR VERSION # bump the version number | 
 | 236 | 	git commit -as | 
| Emil Velikov | 1d104f9 | 2017-01-26 19:26:13 +0000 | [diff] [blame] | 237 | 	cp docs/relnotes/{X.Y,X.Y+1}.html # copy/create relnotes template | 
 | 238 | 	git commit -as | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 239 | 	git push origin X.Y-branchpoint X.Y | 
 | 240 | </pre> | 
 | 241 |  | 
 | 242 | <p> | 
 | 243 | Now go to | 
 | 244 | <a href="https://bugs.freedesktop.org/editversions.cgi?action=add&product=Mesa" target="_parent">Bugzilla</a> and add the new Mesa version X.Y. | 
 | 245 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 246 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 247 | <p> | 
| Emil Velikov | 383e8e2 | 2017-02-20 19:27:49 +0000 | [diff] [blame] | 248 | Check that there are no distribution breaking changes and revert them if needed. | 
 | 249 | For example: files being overwritten on install, etc. Happens extremely rarely - | 
 | 250 | we had only one case so far (see commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04). | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 251 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 252 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 253 | <p> | 
 | 254 | Proceed to <a href="#release">release</a> -rc1. | 
 | 255 | </p> | 
 | 256 |  | 
| 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 | <h1 id="prerelease">Pre-release announcement</h1> | 
 | 259 |  | 
 | 260 | <p> | 
 | 261 | It comes shortly after outstanding patches in the respective branch are pushed. | 
 | 262 | Developers can check, in brief, what's the status of their patches. They, | 
 | 263 | alongside very early testers, are strongly encouraged to test the branch and | 
 | 264 | report any regressions. | 
 | 265 | <br> | 
 | 266 | It is followed by a brief period (normally 24 or 48 hours) before the actual | 
 | 267 | release is made. | 
 | 268 | </p> | 
 | 269 |  | 
 | 270 | <h2>Terminology used</h2> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 271 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 272 | <ul><li>Nominated</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 273 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 274 | <p> | 
 | 275 | Patch that is nominated but yet to to merged in the patch queue/branch. | 
 | 276 | </p> | 
 | 277 |  | 
 | 278 | <ul><li>Queued</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 279 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 280 | <p> | 
 | 281 | Patch is in the queue/branch and will feature in the next release. | 
 | 282 | Barring reported regressions or objections from developers. | 
 | 283 | </p> | 
 | 284 |  | 
 | 285 | <ul><li>Rejected</ul> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 286 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 287 | <p> | 
 | 288 | Patch does not fit the | 
 | 289 | <a href="submittingpatches.html#criteria" target="_parent">criteria</a> and | 
 | 290 | is followed by a brief information. | 
 | 291 | <br> | 
 | 292 | The release maintainer is human so if you believe you've spotted a mistake do | 
 | 293 | let them know. | 
 | 294 | </p> | 
 | 295 |  | 
 | 296 | <h2>Format/template</h2> | 
 | 297 | <pre> | 
 | 298 | Subject: [ANNOUNCE] Mesa X.Y.Z release candidate | 
 | 299 | To: mesa-announce@... | 
 | 300 | Cc: mesa-dev@... | 
 | 301 |  | 
 | 302 | Hello list, | 
 | 303 |  | 
 | 304 | The candidate for the Mesa X.Y.Z is now available. Currently we have: | 
 | 305 |  - NUMBER queued | 
 | 306 |  - NUMBER nominated (outstanding) | 
 | 307 |  - and NUMBER rejected patches | 
 | 308 |  | 
 | 309 | BRIEF SUMMARY OF CHANGES | 
 | 310 |  | 
 | 311 | Take a look at section "Mesa stable queue" for more information. | 
 | 312 |  | 
 | 313 |  | 
 | 314 | Testing reports/general approval | 
 | 315 | -------------------------------- | 
 | 316 | Any testing reports (or general approval of the state of the branch) will be | 
 | 317 | greatly appreciated. | 
 | 318 |  | 
 | 319 | The plan is to have X.Y.Z this DAY (DATE), around or shortly after TIME. | 
 | 320 |  | 
 | 321 | If you have any questions or suggestions - be that about the current patch | 
 | 322 | queue or otherwise, please go ahead. | 
 | 323 |  | 
 | 324 |  | 
 | 325 | Trivial merge conflicts | 
 | 326 | ----------------------- | 
 | 327 | List of commits where manual intervention was required. | 
 | 328 | Keep the authors in the CC list. | 
 | 329 |  | 
 | 330 | commit SHA | 
 | 331 | Author: AUTHOR | 
 | 332 |  | 
 | 333 |     COMMIT SUMMARY | 
 | 334 |  | 
 | 335 |     CHERRY PICKED FROM | 
 | 336 |  | 
 | 337 |  | 
 | 338 | For example: | 
 | 339 |  | 
 | 340 | commit 990f395e007c3204639daa34efc3049f350ee819 | 
 | 341 | Author: Emil Velikov <emil.velikov@collabora.com> | 
 | 342 |  | 
 | 343 |     anv: automake: cleanup the generated json file during make clean | 
 | 344 |  | 
 | 345 |     (cherry picked from commit 8df581520a823564be0ab5af7dbb7d501b1c9670) | 
 | 346 |  | 
 | 347 |  | 
 | 348 | Cheers, | 
 | 349 | Emil | 
 | 350 |  | 
 | 351 |  | 
 | 352 | Mesa stable queue | 
 | 353 | ----------------- | 
 | 354 |  | 
 | 355 | Nominated (NUMBER) | 
 | 356 | ================== | 
 | 357 |  | 
 | 358 | AUTHOR (NUMBER): | 
 | 359 |       SHA     COMMIT SUMMARY | 
 | 360 |  | 
 | 361 | For example: | 
 | 362 |  | 
 | 363 | Dave Airlie (1): | 
 | 364 |       2de85eb radv: fix texturesamples to handle single sample case | 
 | 365 |  | 
 | 366 |  | 
 | 367 | Queued (NUMBER) | 
 | 368 | =============== | 
 | 369 |  | 
 | 370 | AUTHOR (NUMBER): | 
 | 371 |       COMMIT SUMMARY | 
 | 372 |  | 
| Emil Velikov | ccb89e7 | 2017-03-15 17:34:26 +0000 | [diff] [blame] | 373 | For example: | 
 | 374 |  | 
 | 375 | Jonas Pfeil (1): | 
 | 376 |       ralloc: Make sure ralloc() allocations match malloc()'s alignment. | 
 | 377 | Squashed with | 
 | 378 |       ralloc: don't leave out the alignment factor | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 379 |  | 
 | 380 | Rejected (NUMBER) | 
 | 381 | ================= | 
 | 382 |  | 
 | 383 | Rejected (11) | 
 | 384 | ============= | 
 | 385 |  | 
 | 386 | AUTHOR (NUMBER): | 
 | 387 |       SHA     COMMIT SUMMARY | 
 | 388 |  | 
 | 389 | Reason: ... | 
 | 390 | </pre> | 
 | 391 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 392 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 393 | <h1 id="release">Making a new release</h1> | 
 | 394 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 395 | <p> | 
 | 396 | These are the instructions for making a new Mesa release. | 
 | 397 | </p> | 
 | 398 |  | 
 | 399 | <h3>Get latest source files</h3> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 400 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 401 | <p> | 
 | 402 | Ensure the latest code is available - both in your local master and the | 
 | 403 | relevant branch. | 
 | 404 | </p> | 
 | 405 |  | 
 | 406 | <h3>Perform basic testing</h3> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 407 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 408 | <p> | 
 | 409 | Most of the testing should already be done during the | 
 | 410 | <a href="#pickntest">cherry-pick</a> and | 
 | 411 | <a href="#prerelease">pre-announce</a> stages. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 412 | So we do a quick 'touch test' | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 413 | </p> | 
 | 414 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 415 | <ul> | 
 | 416 | <li>make distcheck (you can omit this if you're not using --dist below) | 
 | 417 | <li>scons (from release tarball) | 
 | 418 | <li>the produced binaries work | 
 | 419 | </ul> | 
 | 420 |  | 
 | 421 | <p> | 
 | 422 | Here is one solution that I've been using. | 
 | 423 | </p> | 
 | 424 |  | 
 | 425 | <pre> | 
 | 426 | 	git clean -fXd; git clean -nxd | 
 | 427 | 	read # quick cross check any outstanding files | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 428 | 	export __version=`cat VERSION` | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 429 | 	export __mesa_root=../ | 
 | 430 | 	export __build_root=./foo | 
 | 431 | 	chmod 755 -fR $__build_root; rm -rf $__build_root | 
 | 432 | 	mkdir -p $__build_root && cd $__build_root | 
 | 433 |  | 
| Emil Velikov | 7e79e89 | 2017-03-17 18:17:14 +0000 | [diff] [blame] | 434 | 	$__mesa_root/autogen.sh && make -j2 distcheck | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 435 |  | 
| Emil Velikov | f9b18d5 | 2017-02-01 08:42:14 +0000 | [diff] [blame] | 436 | 	# Build check the tarballs (scons, linux) | 
 | 437 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
 | 438 | 	scons | 
 | 439 | 	cd .. && rm -rf mesa-$__version | 
 | 440 |  | 
 | 441 | 	# Build check the tarballs (scons, windows/mingw) | 
 | 442 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
 | 443 | 	scons platform=windows toolchain=crossmingw | 
 | 444 | 	cd .. && rm -rf mesa-$__version | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 445 |  | 
 | 446 | 	# Test the automake binaries | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 447 | 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 448 | 	./configure \ | 
 | 449 | 		--with-dri-drivers=i965,swrast \ | 
 | 450 | 		--with-gallium-drivers=swrast \ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 451 | 		--with-vulkan-drivers=intel \ | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 452 | 		--enable-llvm-shared-libs \ | 
| Emil Velikov | b3b4156 | 2017-02-07 15:53:14 +0000 | [diff] [blame] | 453 | 		--enable-llvm \ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 454 | 		--enable-glx-tls \ | 
 | 455 | 		--enable-gbm \ | 
 | 456 | 		--enable-egl \ | 
 | 457 | 		--with-egl-platforms=x11,drm,wayland | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 458 | 	make -j2 && DESTDIR=`pwd`/test make -j6 install | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 459 | 	__glxinfo_cmd='glxinfo 2>&1 | egrep -o "Mesa.*|Gallium.*|.*dri\.so"' | 
 | 460 | 	__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"' | 
 | 461 | 	__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"' | 
 | 462 | 	__es2gears_cmd='es2gears_x11 2>&1 | grep -v "configuration file"' | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 463 | 	export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/ | 
 | 464 | 	export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/ | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 465 | 	export LIBGL_DEBUG=verbose | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 466 | 	eval $__glxinfo_cmd | 
 | 467 | 	eval $__glxgears_cmd | 
 | 468 | 	eval $__es2info_cmd | 
 | 469 | 	eval $__es2gears_cmd | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 470 | 	export LIBGL_ALWAYS_SOFTWARE=1 | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 471 | 	eval $__glxinfo_cmd | 
 | 472 | 	eval $__glxgears_cmd | 
 | 473 | 	eval $__es2info_cmd | 
 | 474 | 	eval $__es2gears_cmd | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 475 | 	export LIBGL_ALWAYS_SOFTWARE=1 | 
 | 476 | 	export GALLIUM_DRIVER=softpipe | 
| Emil Velikov | 652e367 | 2017-02-01 09:31:56 +0000 | [diff] [blame] | 477 | 	eval $__glxinfo_cmd | 
 | 478 | 	eval $__glxgears_cmd | 
 | 479 | 	eval $__es2info_cmd | 
 | 480 | 	eval $__es2gears_cmd | 
| Emil Velikov | f9959ca | 2016-11-28 17:18:06 +0000 | [diff] [blame] | 481 | 	# Smoke test DOTA2 | 
 | 482 | 	unset LD_LIBRARY_PATH | 
 | 483 | 	unset LIBGL_DRIVERS_PATH | 
 | 484 | 	unset LIBGL_DEBUG | 
 | 485 | 	unset LIBGL_ALWAYS_SOFTWARE | 
 | 486 | 	export VK_ICD_FILENAMES=`pwd`/src/intel/vulkan/dev_icd.json | 
 | 487 | 	steam steam://rungameid/570  -vconsole -vulkan | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 488 | </pre> | 
 | 489 |  | 
 | 490 | <h3>Update version in file VERSION</h3> | 
 | 491 |  | 
 | 492 | <p> | 
 | 493 | Increment the version contained in the file VERSION at Mesa's top-level, then | 
 | 494 | commit this change. | 
 | 495 | </p> | 
 | 496 |  | 
 | 497 | <h3>Create release notes for the new release</h3> | 
 | 498 |  | 
 | 499 | <p> | 
 | 500 | Create a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous | 
 | 501 | release notes). Note that the sha256sums section of the release notes should | 
 | 502 | be empty (TBD) at this point. | 
 | 503 | </p> | 
 | 504 |  | 
 | 505 | <p> | 
 | 506 | Two scripts are available to help generate portions of the release notes: | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 507 | </p> | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 508 |  | 
 | 509 | <pre> | 
 | 510 | 	./bin/bugzilla_mesa.sh | 
 | 511 | 	./bin/shortlog_mesa.sh | 
 | 512 | </pre> | 
 | 513 |  | 
 | 514 | <p> | 
 | 515 | The first script identifies commits that reference bugzilla bugs and obtains | 
 | 516 | the descriptions of those bugs from bugzilla. The second script generates a | 
 | 517 | log of all commits. In both cases, HTML-formatted lists are printed to stdout | 
 | 518 | to be included in the release notes. | 
 | 519 | </p> | 
 | 520 |  | 
 | 521 | <p> | 
 | 522 | Commit these changes and push the branch. | 
 | 523 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 524 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 525 | <pre> | 
 | 526 | 	git push origin HEAD | 
 | 527 | </pre> | 
 | 528 |  | 
 | 529 |  | 
| Emil Velikov | 0f988ad | 2017-03-15 17:34:25 +0000 | [diff] [blame] | 530 | <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] | 531 |  | 
 | 532 | <p> | 
| Emil Velikov | 7956203 | 2017-03-15 17:34:24 +0000 | [diff] [blame] | 533 | Start the release process. | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 534 | </p> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 535 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 536 | <pre> | 
 | 537 | 	../relative/path/to/release.sh . # append --dist if you've already done distcheck above | 
 | 538 | </pre> | 
 | 539 |  | 
 | 540 | <p> | 
 | 541 | Pay close attention to the prompts as you might be required to enter your GPG | 
 | 542 | and SSH passphrase(s) to sign and upload the files, respectively. | 
 | 543 | </p> | 
 | 544 |  | 
 | 545 | <h3>Add the sha256sums to the release notes</h3> | 
 | 546 |  | 
 | 547 | <p> | 
| Eric Engestrom | 077879c | 2017-02-26 23:58:03 +0000 | [diff] [blame] | 548 | 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] | 549 | </p> | 
 | 550 |  | 
 | 551 | <h3>Back on mesa master, add the new release notes into the tree</h3> | 
 | 552 |  | 
 | 553 | <p> | 
 | 554 | Something like the following steps will do the trick: | 
 | 555 | </p> | 
 | 556 |  | 
 | 557 | <pre> | 
 | 558 | 	git cherry-pick -x X.Y~1 | 
 | 559 | 	git cherry-pick -x X.Y | 
 | 560 | </pre> | 
 | 561 |  | 
 | 562 | <p> | 
 | 563 | Also, edit docs/relnotes.html to add a link to the new release notes, and edit | 
 | 564 | docs/index.html to add a news entry. Then commit and push: | 
 | 565 | </p> | 
 | 566 |  | 
 | 567 | <pre> | 
 | 568 | 	git commit -as -m "docs: add news item and link release notes for X.Y.Z" | 
 | 569 | 	git push origin master X.Y | 
 | 570 | </pre> | 
 | 571 |  | 
 | 572 |  | 
 | 573 | <h1 id="announce">Announce the release</h1> | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 574 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 575 | <p> | 
 | 576 | Use the generated template during the releasing process. | 
 | 577 | </p> | 
 | 578 |  | 
 | 579 |  | 
 | 580 | <h1 id="website">Update the mesa3d.org website</h1> | 
 | 581 |  | 
 | 582 | <p> | 
| Emil Velikov | e280a6b | 2017-02-10 12:51:22 +0000 | [diff] [blame] | 583 | As the hosting was moved to freedesktop, git hooks are deployed to update the | 
 | 584 | 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] | 585 | </p> | 
 | 586 |  | 
| Andres Gomez | e0f7d25 | 2017-03-27 21:48:10 +0300 | [diff] [blame] | 587 |  | 
| Emil Velikov | 2edc29a | 2016-11-16 18:25:41 +0000 | [diff] [blame] | 588 | <h1 id="bugzilla">Update Bugzilla</h1> | 
 | 589 |  | 
 | 590 | <p> | 
 | 591 | Parse through the bugreports as listed in the docs/relnotes/X.Y.Z.html | 
 | 592 | document. | 
 | 593 | <br> | 
 | 594 | If there's outstanding action, close the bug referencing the commit ID which | 
 | 595 | addresses the bug and mention the Mesa version that has the fix. | 
 | 596 | </p> | 
 | 597 |  | 
 | 598 | <p> | 
 | 599 | Note: the above is not applicable to all the reports, so use common sense. | 
 | 600 | </p> | 
 | 601 |  | 
 | 602 |  | 
 | 603 | </div> | 
 | 604 | </body> | 
 | 605 | </html> |