releasing.html revision b8e80941
1b8e80941Smrg<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2b8e80941Smrg<html lang="en">
3b8e80941Smrg<head>
4b8e80941Smrg  <meta http-equiv="content-type" content="text/html; charset=utf-8">
5b8e80941Smrg  <title>Releasing process</title>
6b8e80941Smrg  <link rel="stylesheet" type="text/css" href="mesa.css">
7b8e80941Smrg</head>
8b8e80941Smrg<body>
9b8e80941Smrg
10b8e80941Smrg<div class="header">
11b8e80941Smrg  <h1>The Mesa 3D Graphics Library</h1>
12b8e80941Smrg</div>
13b8e80941Smrg
14b8e80941Smrg<iframe src="contents.html"></iframe>
15b8e80941Smrg<div class="content">
16b8e80941Smrg
17b8e80941Smrg
18b8e80941Smrg<h1>Releasing process</h1>
19b8e80941Smrg
20b8e80941Smrg<ul>
21b8e80941Smrg<li><a href="#overview">Overview</a>
22b8e80941Smrg<li><a href="#schedule">Release schedule</a>
23b8e80941Smrg<li><a href="#pickntest">Cherry-pick and test</a>
24b8e80941Smrg<li><a href="#stagingbranch">Staging branch</a>
25b8e80941Smrg<li><a href="#branch">Making a branchpoint</a>
26b8e80941Smrg<li><a href="#prerelease">Pre-release announcement</a>
27b8e80941Smrg<li><a href="#release">Making a new release</a>
28b8e80941Smrg<li><a href="#announce">Announce the release</a>
29b8e80941Smrg<li><a href="#website">Update the mesa3d.org website</a>
30b8e80941Smrg<li><a href="#bugzilla">Update Bugzilla</a>
31b8e80941Smrg</ul>
32b8e80941Smrg
33b8e80941Smrg
34b8e80941Smrg<h1 id="overview">Overview</h1>
35b8e80941Smrg
36b8e80941Smrg<p>
37b8e80941SmrgThis document uses the convention X.Y.Z for the release number with X.Y being
38b8e80941Smrgthe stable branch name.
39b8e80941Smrg<br>
40b8e80941SmrgMesa provides feature and bugfix releases. Former use zero as patch version (Z),
41b8e80941Smrgwhile the latter have a non-zero one.
42b8e80941Smrg</p>
43b8e80941Smrg
44b8e80941Smrg<p>
45b8e80941SmrgFor example:
46b8e80941Smrg</p>
47b8e80941Smrg<pre>
48b8e80941Smrg	Mesa 10.1.0 - 10.1 branch, feature
49b8e80941Smrg	Mesa 10.1.4 - 10.1 branch, bugfix
50b8e80941Smrg	Mesa 12.0.0 - 12.0 branch, feature
51b8e80941Smrg	Mesa 12.0.2 - 12.0 branch, bugfix
52b8e80941Smrg</pre>
53b8e80941Smrg
54b8e80941Smrg
55b8e80941Smrg<h1 id="schedule">Release schedule</h1>
56b8e80941Smrg
57b8e80941Smrg<p>
58b8e80941SmrgReleases should happen on Wednesdays. Delays can occur although those
59b8e80941Smrgshould be kept to a minimum.
60b8e80941Smrg<br>
61b8e80941SmrgSee our <a href="release-calendar.html" target="_parent">calendar</a>
62b8e80941Smrgfor information about how the release schedule is planned, and the
63b8e80941Smrgdate and other details for individual releases.
64b8e80941Smrg</p>
65b8e80941Smrg
66b8e80941Smrg<h2>Feature releases</h2>
67b8e80941Smrg<ul>
68b8e80941Smrg<li>Available approximately every three months.
69b8e80941Smrg<li>Initial timeplan available 2-4 weeks before the planned branchpoint (rc1)
70b8e80941Smrgon the mesa-announce@ mailing list.
71b8e80941Smrg<li>Typically, the final release will happen after 4
72b8e80941Smrgcandidates. Additional ones may be needed in order to resolve blocking
73b8e80941Smrgregressions, though.
74b8e80941Smrg<li>A <a href="#prerelease">pre-release</a> announcement should be available
75b8e80941Smrgapproximately 24 hours before the final (non-rc) release.
76b8e80941Smrg</ul>
77b8e80941Smrg
78b8e80941Smrg<h2>Stable releases</h2>
79b8e80941Smrg<ul>
80b8e80941Smrg<li>Normally available once every two weeks.
81b8e80941Smrg<li>Only the latest branch has releases. See note below.
82b8e80941Smrg<li>A <a href="#prerelease">pre-release</a> announcement should be available
83b8e80941Smrgapproximately 48 hours before the actual release.
84b8e80941Smrg</ul>
85b8e80941Smrg
86b8e80941Smrg<p>
87b8e80941SmrgNote: There is one or two releases overlap when changing branches. For example:
88b8e80941Smrg<br>
89b8e80941SmrgThe final release from the 12.0 series Mesa 12.0.5 will be out around the same
90b8e80941Smrgtime (or shortly after) 13.0.1 is out.
91b8e80941Smrg<br>
92b8e80941SmrgThis also involves that, as a final release may be delayed due to the
93b8e80941Smrgneed of additional candidates to solve some blocking regression(s),
94b8e80941Smrgthe release manager might have to update
95b8e80941Smrgthe <a href="release-calendar.html" target="_parent">calendar</a> with
96b8e80941Smrgadditional bug fix releases of the current stable branch.
97b8e80941Smrg</p>
98b8e80941Smrg
99b8e80941Smrg
100b8e80941Smrg<h1 id="pickntest">Cherry-picking and testing</h1>
101b8e80941Smrg
102b8e80941Smrg<p>
103b8e80941SmrgCommits nominated for the active branch are picked as based on the
104b8e80941Smrg<a href="submittingpatches.html#criteria" target="_parent">criteria</a> as
105b8e80941Smrgdescribed in the same section.
106b8e80941Smrg</p>
107b8e80941Smrg
108b8e80941Smrg<p>
109b8e80941SmrgNomination happens in the mesa-stable@ mailing list. However,
110b8e80941Smrgmaintainer is responsible of checking for forgotten candidates in the
111b8e80941Smrgmaster branch. This is achieved by a combination of ad-hoc scripts and
112b8e80941Smrga casual search for terms such as regression, fix, broken and similar.
113b8e80941Smrg</p>
114b8e80941Smrg
115b8e80941Smrg<p>
116b8e80941SmrgMaintainer is also responsible for testing in various possible permutations of
117b8e80941Smrgthe autoconf and scons build.
118b8e80941Smrg</p>
119b8e80941Smrg
120b8e80941Smrg<h2>Cherry-picking and build/check testing</h2>
121b8e80941Smrg
122b8e80941Smrg<p>Done continuously up-to the <a href="#prerelease">pre-release</a> announcement.</p>
123b8e80941Smrg
124b8e80941Smrg<p>
125b8e80941SmrgDevelopers can request, <em>as an exception</em>, patches to be applied up-to
126b8e80941Smrgthe last one hour before the actual release. This is made <strong>only</strong>
127b8e80941Smrgwith explicit permission/request, and the patch <strong>must</strong> be very
128b8e80941Smrgwell contained. Thus it cannot affect more than one driver/subsystem.
129b8e80941Smrg</p>
130b8e80941Smrg
131b8e80941Smrg<p>Following developers have requested permanent exception</p>
132b8e80941Smrg<ul>
133b8e80941Smrg<li><em>Ilia Mirkin</em>
134b8e80941Smrg<li><em>AMD team</em>
135b8e80941Smrg</ul>
136b8e80941Smrg
137b8e80941Smrg<p>The following must pass:</p>
138b8e80941Smrg<ul>
139b8e80941Smrg<li>meson test, scons and scons check
140b8e80941Smrg<li>Testing with different version of system components - LLVM and others is also
141b8e80941Smrgperformed where possible.
142b8e80941Smrg<li>As a general rule, testing with various combinations of configure
143b8e80941Smrgswitches, depending on the specific patchset.
144b8e80941Smrg</ul>
145b8e80941Smrg
146b8e80941Smrg<p>
147b8e80941SmrgThese are achieved by combination of <a href="basictesting">local testing</a>,
148b8e80941Smrgwhich includes mingw-w64 cross compilation and AppVeyor plus Travis-CI, the
149b8e80941Smrglatter two as part of their Github integration.
150b8e80941Smrg</p>
151b8e80941Smrg
152b8e80941Smrg<p>
153b8e80941SmrgFor Windows related changes, the main contact point is Brian
154b8e80941SmrgPaul. Jose Fonseca can also help as a fallback contact.
155b8e80941Smrg</p>
156b8e80941Smrg
157b8e80941Smrg<p>
158b8e80941SmrgFor Android related changes, the main contact is Tapani
159b8e80941SmrgP&auml;lli. Mauro Rossi is collaborating with android-x86 and may
160b8e80941Smrgprovide feedback about the build status in that project.
161b8e80941Smrg</p>
162b8e80941Smrg
163b8e80941Smrg<p>
164b8e80941SmrgFor MacOSX related changes, Jeremy Huddleston Sequoia is currently a
165b8e80941Smrggood contact point.
166b8e80941Smrg</p>
167b8e80941Smrg
168b8e80941Smrg<p>
169b8e80941Smrg<strong>Note:</strong> If a patch in the current queue needs any additional
170b8e80941Smrgfix(es), then they should be squashed together.
171b8e80941Smrg<br>
172b8e80941SmrgThe commit messages and the <code>cherry picked from</code> tags must be preserved.
173b8e80941Smrg</p>
174b8e80941Smrg
175b8e80941Smrg<p>
176b8e80941SmrgThis should be noted in the <a href="#prerelease">pre-announce</a> email.
177b8e80941Smrg</p>
178b8e80941Smrg
179b8e80941Smrg<pre>
180b8e80941Smrg    git show b10859ec41d09c57663a258f43fe57c12332698e
181b8e80941Smrg
182b8e80941Smrg    commit b10859ec41d09c57663a258f43fe57c12332698e
183b8e80941Smrg    Author: Jonas Pfeil &lt;pfeiljonas@gmx.de&gt;
184b8e80941Smrg    Date:   Wed Mar 1 18:11:10 2017 +0100
185b8e80941Smrg
186b8e80941Smrg        ralloc: Make sure ralloc() allocations match malloc()'s alignment.
187b8e80941Smrg
188b8e80941Smrg        The header of ralloc needs to be aligned, because the compiler assumes
189b8e80941Smrg        ...
190b8e80941Smrg
191b8e80941Smrg        (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14)
192b8e80941Smrg
193b8e80941Smrg        Squashed with commit:
194b8e80941Smrg
195b8e80941Smrg        ralloc: don't leave out the alignment factor
196b8e80941Smrg
197b8e80941Smrg        Experimentation shows that without alignment factor gcc and clang choose
198b8e80941Smrg        ...
199b8e80941Smrg
200b8e80941Smrg        (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126)
201b8e80941Smrg</pre>
202b8e80941Smrg
203b8e80941Smrg<h2>Regression/functionality testing</h2>
204b8e80941Smrg
205b8e80941Smrg<p>
206b8e80941SmrgLess often (once or twice), shortly before the pre-release announcement.
207b8e80941SmrgEnsure that testing is redone if Intel devs have requested an exception, as per above.
208b8e80941Smrg</p>
209b8e80941Smrg
210b8e80941Smrg<ul>
211b8e80941Smrg<li><em>no regressions should be observed for Piglit/dEQP/CTS/Vulkan on Intel platforms</em>
212b8e80941Smrg<li><em>no regressions should be observed for Piglit using the swrast, softpipe
213b8e80941Smrgand llvmpipe drivers</em>
214b8e80941Smrg</ul>
215b8e80941Smrg
216b8e80941Smrg<p>
217b8e80941SmrgCurrently 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.
218b8e80941Smrg</p>
219b8e80941Smrg
220b8e80941Smrg<p>
221b8e80941SmrgInstalling the built driver from the pre-announced RC branch in the
222b8e80941Smrgsystem and making some every day's use until the release may be a good
223b8e80941Smrgidea too.
224b8e80941Smrg</p>
225b8e80941Smrg
226b8e80941Smrg<h1 id="stagingbranch">Staging branch</h1>
227b8e80941Smrg
228b8e80941Smrg<p>
229b8e80941SmrgA live branch, which contains the currently merge/rejected patches is available
230b8e80941Smrgin the main repository under <code>staging/X.Y</code>. For example:
231b8e80941Smrg</p>
232b8e80941Smrg<pre>
233b8e80941Smrg	staging/18.1 - WIP branch for the 18.1 series
234b8e80941Smrg	staging/18.2 - WIP branch for the 18.2 series
235b8e80941Smrg</pre>
236b8e80941Smrg
237b8e80941Smrg<p>
238b8e80941SmrgNotes:
239b8e80941Smrg</p>
240b8e80941Smrg<ul>
241b8e80941Smrg<li>People are encouraged to test the staging branch and report regressions.</li>
242b8e80941Smrg<li>The branch history is not stable and it <strong>will</strong> be rebased,</li>
243b8e80941Smrg</ul>
244b8e80941Smrg
245b8e80941Smrg
246b8e80941Smrg<h1 id="branch">Making a branchpoint</h1>
247b8e80941Smrg
248b8e80941Smrg<p>
249b8e80941SmrgA branchpoint is made such that new development can continue in parallel to
250b8e80941Smrgstabilisation and bugfixing.
251b8e80941Smrg</p>
252b8e80941Smrg
253b8e80941Smrg<p>
254b8e80941SmrgNote: Before doing a branch ensure that basic build and <code>meson test</code>
255b8e80941Smrgtesting is done and there are little to-no issues.
256b8e80941Smrg<br>
257b8e80941SmrgIdeally all of those should be tackled already.
258b8e80941Smrg</p>
259b8e80941Smrg
260b8e80941Smrg<p>
261b8e80941SmrgCheck if the version number is going to remain as, alternatively
262b8e80941Smrg<code> git mv docs/relnotes/{current,new}.html </code> as appropriate.
263b8e80941Smrg</p>
264b8e80941Smrg
265b8e80941Smrg<p>
266b8e80941SmrgTo setup the branchpoint:
267b8e80941Smrg</p>
268b8e80941Smrg<pre>
269b8e80941Smrg	git checkout master # make sure we're in master first
270b8e80941Smrg	git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint"
271b8e80941Smrg	git checkout -b X.Y
272b8e80941Smrg	git checkout master
273b8e80941Smrg	$EDITOR VERSION # bump the version number
274b8e80941Smrg	git commit -as
275b8e80941Smrg	cp docs/relnotes/{X.Y,X.Y+1}.html # copy/create relnotes template
276b8e80941Smrg	git commit -as
277b8e80941Smrg	git push origin X.Y-branchpoint X.Y
278b8e80941Smrg</pre>
279b8e80941Smrg
280b8e80941Smrg<p>
281b8e80941SmrgNow go to
282b8e80941Smrg<a href="https://bugs.freedesktop.org/editversions.cgi?action=add&product=Mesa" target="_parent">Bugzilla</a> and add the new Mesa version X.Y.
283b8e80941Smrg</p>
284b8e80941Smrg
285b8e80941Smrg<p>
286b8e80941SmrgCheck that there are no distribution breaking changes and revert them if needed.
287b8e80941SmrgFor example: files being overwritten on install, etc. Happens extremely rarely -
288b8e80941Smrgwe had only one case so far (see commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04).
289b8e80941Smrg</p>
290b8e80941Smrg
291b8e80941Smrg<p>
292b8e80941SmrgProceed to <a href="#release">release</a> -rc1.
293b8e80941Smrg</p>
294b8e80941Smrg
295b8e80941Smrg
296b8e80941Smrg<h1 id="prerelease">Pre-release announcement</h1>
297b8e80941Smrg
298b8e80941Smrg<p>
299b8e80941SmrgIt comes shortly after outstanding patches in the respective branch are pushed.
300b8e80941SmrgDevelopers can check, in brief, what's the status of their patches. They,
301b8e80941Smrgalongside very early testers, are strongly encouraged to test the branch and
302b8e80941Smrgreport any regressions.
303b8e80941Smrg<br>
304b8e80941SmrgIt is followed by a brief period (normally 24 or 48 hours) before the actual
305b8e80941Smrgrelease is made.
306b8e80941Smrg</p>
307b8e80941Smrg
308b8e80941Smrg<p>
309b8e80941SmrgBe aware to add a note to warn about a final release in a series, if
310b8e80941Smrgthat is the case.
311b8e80941Smrg</p>
312b8e80941Smrg
313b8e80941Smrg<h2>Terminology used</h2>
314b8e80941Smrg
315b8e80941Smrg<ul><li>Nominated</ul>
316b8e80941Smrg
317b8e80941Smrg<p>
318b8e80941SmrgPatch that is nominated but yet to to merged in the patch queue/branch.
319b8e80941Smrg</p>
320b8e80941Smrg
321b8e80941Smrg<ul><li>Queued</ul>
322b8e80941Smrg
323b8e80941Smrg<p>
324b8e80941SmrgPatch is in the queue/branch and will feature in the next release.
325b8e80941SmrgBarring reported regressions or objections from developers.
326b8e80941Smrg</p>
327b8e80941Smrg
328b8e80941Smrg<ul><li>Rejected</ul>
329b8e80941Smrg
330b8e80941Smrg<p>
331b8e80941SmrgPatch does not fit the
332b8e80941Smrg<a href="submittingpatches.html#criteria" target="_parent">criteria</a> and
333b8e80941Smrgis followed by a brief information.
334b8e80941Smrg<br>
335b8e80941SmrgThe release maintainer is human so if you believe you've spotted a mistake do
336b8e80941Smrglet them know.
337b8e80941Smrg</p>
338b8e80941Smrg
339b8e80941Smrg<h2>Format/template</h2>
340b8e80941Smrg<pre>
341b8e80941SmrgSubject: [ANNOUNCE] Mesa X.Y.Z release candidate
342b8e80941SmrgTo: mesa-announce@...
343b8e80941SmrgCc: mesa-dev@...
344b8e80941Smrg
345b8e80941SmrgHello list,
346b8e80941Smrg
347b8e80941SmrgThe candidate for the Mesa X.Y.Z is now available. Currently we have:
348b8e80941Smrg - NUMBER queued
349b8e80941Smrg - NUMBER nominated (outstanding)
350b8e80941Smrg - and NUMBER rejected patches
351b8e80941Smrg
352b8e80941Smrg[If applicable:
353b8e80941SmrgNote: this is the final anticipated release in the SERIES series. Users are
354b8e80941Smrgencouraged to migrate to the NEXT_SERIES series in order to obtain future fixes.]
355b8e80941Smrg
356b8e80941SmrgBRIEF SUMMARY OF CHANGES
357b8e80941Smrg
358b8e80941SmrgTake a look at section "Mesa stable queue" for more information.
359b8e80941Smrg
360b8e80941Smrg
361b8e80941SmrgTesting reports/general approval
362b8e80941Smrg--------------------------------
363b8e80941SmrgAny testing reports (or general approval of the state of the branch) will be
364b8e80941Smrggreatly appreciated.
365b8e80941Smrg
366b8e80941SmrgThe plan is to have X.Y.Z this DAY (DATE), around or shortly after TIME.
367b8e80941Smrg
368b8e80941SmrgIf you have any questions or suggestions - be that about the current patch
369b8e80941Smrgqueue or otherwise, please go ahead.
370b8e80941Smrg
371b8e80941Smrg
372b8e80941SmrgTrivial merge conflicts
373b8e80941Smrg-----------------------
374b8e80941SmrgList of commits where manual intervention was required.
375b8e80941SmrgKeep the authors in the CC list.
376b8e80941Smrg
377b8e80941Smrgcommit SHA
378b8e80941SmrgAuthor: AUTHOR
379b8e80941Smrg
380b8e80941Smrg    COMMIT SUMMARY
381b8e80941Smrg
382b8e80941Smrg    CHERRY PICKED FROM
383b8e80941Smrg
384b8e80941Smrg
385b8e80941SmrgFor example:
386b8e80941Smrg
387b8e80941Smrgcommit 990f395e007c3204639daa34efc3049f350ee819
388b8e80941SmrgAuthor: Emil Velikov &lt;emil.velikov@collabora.com&gt;
389b8e80941Smrg
390b8e80941Smrg    anv: automake: cleanup the generated json file during make clean
391b8e80941Smrg
392b8e80941Smrg    (cherry picked from commit 8df581520a823564be0ab5af7dbb7d501b1c9670)
393b8e80941Smrg
394b8e80941Smrg
395b8e80941SmrgCheers,
396b8e80941SmrgEmil
397b8e80941Smrg
398b8e80941Smrg
399b8e80941SmrgMesa stable queue
400b8e80941Smrg-----------------
401b8e80941Smrg
402b8e80941SmrgNominated (NUMBER)
403b8e80941Smrg==================
404b8e80941Smrg
405b8e80941SmrgAUTHOR (NUMBER):
406b8e80941Smrg      SHA     COMMIT SUMMARY
407b8e80941Smrg
408b8e80941SmrgFor example:
409b8e80941Smrg
410b8e80941SmrgDave Airlie (1):
411b8e80941Smrg      2de85eb radv: fix texturesamples to handle single sample case
412b8e80941Smrg
413b8e80941Smrg
414b8e80941SmrgQueued (NUMBER)
415b8e80941Smrg===============
416b8e80941Smrg
417b8e80941SmrgAUTHOR (NUMBER):
418b8e80941Smrg      COMMIT SUMMARY
419b8e80941Smrg[If applicable:
420b8e80941SmrgSquashed with
421b8e80941Smrg      COMMIT SUMMARY]
422b8e80941Smrg
423b8e80941SmrgFor example:
424b8e80941Smrg
425b8e80941SmrgJonas Pfeil (1):
426b8e80941Smrg      ralloc: Make sure ralloc() allocations match malloc()'s alignment.
427b8e80941SmrgSquashed with
428b8e80941Smrg      ralloc: don't leave out the alignment factor
429b8e80941Smrg
430b8e80941Smrg
431b8e80941SmrgRejected (NUMBER)
432b8e80941Smrg=================
433b8e80941Smrg
434b8e80941SmrgAUTHOR (NUMBER):
435b8e80941Smrg      SHA     COMMIT SUMMARY
436b8e80941Smrg
437b8e80941SmrgReason: ...
438b8e80941Smrg
439b8e80941SmrgFor example:
440b8e80941Smrg
441b8e80941SmrgEmil Velikov (1)
442b8e80941Smrg      a39ad18 configure.ac: honour LLVM_LIBDIR when linking against LLVM
443b8e80941Smrg
444b8e80941SmrgReason: The patch was reverted shortly after it was merged.
445b8e80941Smrg</pre>
446b8e80941Smrg
447b8e80941Smrg
448b8e80941Smrg<h1 id="release">Making a new release</h1>
449b8e80941Smrg
450b8e80941Smrg<p>
451b8e80941SmrgThese are the instructions for making a new Mesa release.
452b8e80941Smrg</p>
453b8e80941Smrg
454b8e80941Smrg<h3>Get latest source files</h3>
455b8e80941Smrg
456b8e80941Smrg<p>
457b8e80941SmrgEnsure the latest code is available - both in your local master and the
458b8e80941Smrgrelevant branch.
459b8e80941Smrg</p>
460b8e80941Smrg
461b8e80941Smrg<h3 id="basictesting">Perform basic testing</h3>
462b8e80941Smrg
463b8e80941Smrg<p>
464b8e80941SmrgMost of the testing should already be done during the
465b8e80941Smrg<a href="#pickntest">cherry-pick</a> and
466b8e80941Smrg<a href="#prerelease">pre-announce</a> stages.
467b8e80941SmrgSo we do a quick 'touch test'
468b8e80941Smrg</p>
469b8e80941Smrg
470b8e80941Smrg<ul>
471b8e80941Smrg<li>meson dist
472b8e80941Smrg<li>scons (from release tarball)
473b8e80941Smrg<li>the produced binaries work
474b8e80941Smrg</ul>
475b8e80941Smrg
476b8e80941Smrg<p>
477b8e80941Smrg  Here is one solution:
478b8e80941Smrg</p>
479b8e80941Smrg
480b8e80941Smrg<pre>
481b8e80941Smrg    __glxgears_cmd='glxgears 2&gt;&amp;1 | grep -v "configuration file"'
482b8e80941Smrg    __es2info_cmd='es2_info 2&gt;&amp;1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
483b8e80941Smrg    __es2gears_cmd='es2gears_x11 2&gt;&amp;1 | grep -v "configuration file"'
484b8e80941Smrg    test "x$LD_LIBRARY_PATH" != 'x' &amp;&amp; __old_ld="$LD_LIBRARY_PATH"
485b8e80941Smrg    export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/:"${__old_ld}"
486b8e80941Smrg    export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/
487b8e80941Smrg    export LIBGL_DEBUG=verbose
488b8e80941Smrg    eval $__glxinfo_cmd
489b8e80941Smrg    eval $__glxgears_cmd
490b8e80941Smrg    eval $__es2info_cmd
491b8e80941Smrg    eval $__es2gears_cmd
492b8e80941Smrg    export LIBGL_ALWAYS_SOFTWARE=true
493b8e80941Smrg    eval $__glxinfo_cmd
494b8e80941Smrg    eval $__glxgears_cmd
495b8e80941Smrg    eval $__es2info_cmd
496b8e80941Smrg    eval $__es2gears_cmd
497b8e80941Smrg    export LIBGL_ALWAYS_SOFTWARE=true
498b8e80941Smrg    export GALLIUM_DRIVER=softpipe
499b8e80941Smrg    eval $__glxinfo_cmd
500b8e80941Smrg    eval $__glxgears_cmd
501b8e80941Smrg    eval $__es2info_cmd
502b8e80941Smrg    eval $__es2gears_cmd
503b8e80941Smrg    # Smoke test DOTA2
504b8e80941Smrg    unset LD_LIBRARY_PATH
505b8e80941Smrg    test "x$__old_ld" != 'x' &amp;&amp; export LD_LIBRARY_PATH="$__old_ld" &amp;&amp; unset __old_ld
506b8e80941Smrg    unset LIBGL_DRIVERS_PATH
507b8e80941Smrg    unset LIBGL_DEBUG
508b8e80941Smrg    unset LIBGL_ALWAYS_SOFTWARE
509b8e80941Smrg    unset GALLIUM_DRIVER
510b8e80941Smrg    export VK_ICD_FILENAMES=`pwd`/src/intel/vulkan/dev_icd.json
511b8e80941Smrg    steam steam://rungameid/570  -vconsole -vulkan
512b8e80941Smrg    unset VK_ICD_FILENAMES
513b8e80941Smrg</pre>
514b8e80941Smrg
515b8e80941Smrg<h3>Update version in file VERSION</h3>
516b8e80941Smrg
517b8e80941Smrg<p>
518b8e80941SmrgIncrement the version contained in the file VERSION at Mesa's top-level, then
519b8e80941Smrgcommit this change.
520b8e80941Smrg</p>
521b8e80941Smrg
522b8e80941Smrg<h3>Create release notes for the new release</h3>
523b8e80941Smrg
524b8e80941Smrg<p>
525b8e80941SmrgCreate a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous
526b8e80941Smrgrelease notes). Note that the sha256sums section of the release notes should
527b8e80941Smrgbe empty (TBD) at this point.
528b8e80941Smrg</p>
529b8e80941Smrg
530b8e80941Smrg<p>
531b8e80941SmrgTwo scripts are available to help generate portions of the release notes:
532b8e80941Smrg</p>
533b8e80941Smrg
534b8e80941Smrg<pre>
535b8e80941Smrg	./bin/bugzilla_mesa.sh
536b8e80941Smrg	./bin/shortlog_mesa.sh
537b8e80941Smrg</pre>
538b8e80941Smrg
539b8e80941Smrg<p>
540b8e80941SmrgThe first script identifies commits that reference bugzilla bugs and obtains
541b8e80941Smrgthe descriptions of those bugs from bugzilla. The second script generates a
542b8e80941Smrglog of all commits. In both cases, HTML-formatted lists are printed to stdout
543b8e80941Smrgto be included in the release notes.
544b8e80941Smrg</p>
545b8e80941Smrg
546b8e80941Smrg<p>
547b8e80941SmrgCommit these changes and push the branch.
548b8e80941Smrg</p>
549b8e80941Smrg
550b8e80941Smrg<pre>
551b8e80941Smrg	git push origin HEAD
552b8e80941Smrg</pre>
553b8e80941Smrg
554b8e80941Smrg
555b8e80941Smrg<h3>Use the release.sh script from xorg <a href="https://cgit.freedesktop.org/xorg/util/modular/">util-modular</a></h3>
556b8e80941Smrg
557b8e80941Smrg<p>
558b8e80941SmrgStart the release process.
559b8e80941Smrg</p>
560b8e80941Smrg
561b8e80941Smrg<pre>
562b8e80941Smrg	# For the dist/distcheck, you may want to specify which LLVM to use:
563b8e80941Smrg	# export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config
564b8e80941Smrg	../relative/path/to/release.sh . # append --dist if you've already done distcheck above
565b8e80941Smrg</pre>
566b8e80941Smrg
567b8e80941Smrg<p>
568b8e80941SmrgPay close attention to the prompts as you might be required to enter your GPG
569b8e80941Smrgand SSH passphrase(s) to sign and upload the files, respectively.
570b8e80941Smrg</p>
571b8e80941Smrg
572b8e80941Smrg<h3>Add the sha256sums to the release notes</h3>
573b8e80941Smrg
574b8e80941Smrg<p>
575b8e80941SmrgEdit docs/relnotes/X.Y.Z.html to add the sha256sums as available in the mesa-X.Y.Z.announce template. Commit this change.
576b8e80941Smrg</p>
577b8e80941Smrg
578b8e80941Smrg<h3>Back on mesa master, add the new release notes into the tree</h3>
579b8e80941Smrg
580b8e80941Smrg<p>
581b8e80941SmrgSomething like the following steps will do the trick:
582b8e80941Smrg</p>
583b8e80941Smrg
584b8e80941Smrg<pre>
585b8e80941Smrg	git cherry-pick -x X.Y~1
586b8e80941Smrg	git cherry-pick -x X.Y
587b8e80941Smrg</pre>
588b8e80941Smrg
589b8e80941Smrg<p>
590b8e80941SmrgAlso, edit docs/relnotes.html to add a link to the new release notes,
591b8e80941Smrgedit docs/index.html to add a news entry and a note in case of the
592b8e80941Smrglast release in a series, and remove the version from
593b8e80941Smrgdocs/release-calendar.html. Then commit and push:
594b8e80941Smrg</p>
595b8e80941Smrg
596b8e80941Smrg<pre>
597b8e80941Smrg	git commit -as -m "docs: update calendar, add news item and link release notes for X.Y.Z"
598b8e80941Smrg	git push origin master X.Y
599b8e80941Smrg</pre>
600b8e80941Smrg
601b8e80941Smrg
602b8e80941Smrg<h1 id="announce">Announce the release</h1>
603b8e80941Smrg
604b8e80941Smrg<p>
605b8e80941SmrgUse the generated template during the releasing process.
606b8e80941Smrg</p>
607b8e80941Smrg
608b8e80941Smrg<p>
609b8e80941SmrgAgain, pay attention to add a note to warn about a final release in a
610b8e80941Smrgseries, if that is the case.
611b8e80941Smrg</p>
612b8e80941Smrg
613b8e80941Smrg
614b8e80941Smrg<h1 id="website">Update the mesa3d.org website</h1>
615b8e80941Smrg
616b8e80941Smrg<p>
617b8e80941SmrgAs the hosting was moved to freedesktop, git hooks are deployed to update the
618b8e80941Smrgwebsite. Manually check that it is updated 5-10 minutes after the final <code>git push</code>
619b8e80941Smrg</p>
620b8e80941Smrg
621b8e80941Smrg
622b8e80941Smrg<h1 id="bugzilla">Update Bugzilla</h1>
623b8e80941Smrg
624b8e80941Smrg<p>
625b8e80941SmrgParse through the bugreports as listed in the docs/relnotes/X.Y.Z.html
626b8e80941Smrgdocument.
627b8e80941Smrg<br>
628b8e80941SmrgIf there's outstanding action, close the bug referencing the commit ID which
629b8e80941Smrgaddresses the bug and mention the Mesa version that has the fix.
630b8e80941Smrg</p>
631b8e80941Smrg
632b8e80941Smrg<p>
633b8e80941SmrgNote: the above is not applicable to all the reports, so use common sense.
634b8e80941Smrg</p>
635b8e80941Smrg
636b8e80941Smrg
637b8e80941Smrg</div>
638b8e80941Smrg</body>
639b8e80941Smrg</html>
640