4 - `Overview <#overview>`__
5 - `Release schedule <#schedule>`__
6 - `Cherry-pick and test <#pickntest>`__
7 - `Staging branch <#stagingbranch>`__
8 - `Making a branchpoint <#branch>`__
9 - `Making a new release <#release>`__
10 - `Announce the release <#announce>`__
11 - `Update Gitlab Issues <#gitlab>`__
16 This document uses the convention X.Y.Z for the release number with X.Y
17 being the stable branch name.
19 Mesa provides feature and bugfix releases. Former use zero as patch
20 version (Z), while the latter have a non-zero one.
26 Mesa 10.1.0 - 10.1 branch, feature
27 Mesa 10.1.4 - 10.1 branch, bugfix
28 Mesa 12.0.0 - 12.0 branch, feature
29 Mesa 12.0.2 - 12.0 branch, bugfix
36 Releases should happen on Wednesdays. Delays can occur although those
37 should be kept to a minimum.
39 See our `calendar <release-calendar.html>`__ for information about how
40 the release schedule is planned, and the date and other details for
46 - Available approximately every three months.
47 - Initial timeplan available 2-4 weeks before the planned branchpoint
48 (rc1) on the mesa-announce@ mailing list.
49 - Typically, the final release will happen after 4 candidates.
50 Additional ones may be needed in order to resolve blocking
56 - Normally available once every two weeks.
57 - Only the latest branch has releases. See note below.
59 Note: There is one or two releases overlap when changing branches. For
62 The final release from the 12.0 series Mesa 12.0.5 will be out around
63 the same time (or shortly after) 13.0.1 is out.
65 This also involves that, as a final release may be delayed due to the
66 need of additional candidates to solve some blocking regression(s), the
67 release manager might have to update the
68 `calendar <release-calendar.html>`__ with additional bug fix releases of
69 the current stable branch.
73 Cherry-picking and testing
74 --------------------------
76 Commits nominated for the active branch are picked as based on the
77 `criteria <submittingpatches.html#criteria>`__ as described in the same
80 Nominations happen via special tags in the commit messages, and via
81 gitlab merge requests against the staging branches. There are special
82 scripts used to read the tags.
84 The maintainer should watch or be in contact with the Intel CI team, as
85 well as watch the gitlab CI for regressions.
87 Cherry picking should be done with the '-x' switch (to automatically add
88 "cherry picked from ..." to the commit message):
90 ``git cherry-pick -x abcdef12345667890``
92 Developers can request, *as an exception*, patches to be applied up-to
93 the last one hour before the actual release. This is made **only** with
94 explicit permission/request, and the patch **must** be very well
95 contained. Thus it cannot affect more than one driver/subsystem.
97 Following developers have requested permanent exception
102 The gitlab CI must pass.
104 For Windows related changes, the main contact point is Brian Paul. Jose
105 Fonseca can also help as a fallback contact.
107 For Android related changes, the main contact is Tapani Pälli. Mauro
108 Rossi is collaborating with android-x86 and may provide feedback about
109 the build status in that project.
111 For MacOSX related changes, Jeremy Huddleston Sequoia is currently a
114 **Note:** If a patch in the current queue needs any additional fix(es),
115 then they should be squashed together. The commit messages and the
116 "``cherry picked from``"-tags must be preserved.
120 git show b10859ec41d09c57663a258f43fe57c12332698e
122 commit b10859ec41d09c57663a258f43fe57c12332698e
123 Author: Jonas Pfeil <pfeiljonas@gmx.de>
124 Date: Wed Mar 1 18:11:10 2017 +0100
126 ralloc: Make sure ralloc() allocations match malloc()'s alignment.
128 The header of ralloc needs to be aligned, because the compiler assumes
131 (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14)
133 Squashed with commit:
135 ralloc: don't leave out the alignment factor
137 Experimentation shows that without alignment factor gcc and clang choose
140 (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126)
142 Regression/functionality testing
143 --------------------------------
145 - *no regressions should be observed for Piglit/dEQP/CTS/Vulkan on
147 - *no regressions should be observed for Piglit using the swrast,
148 softpipe and llvmpipe drivers*
155 A live branch, which contains the currently merge/rejected patches is
156 available in the main repository under ``staging/X.Y``. For example:
160 staging/18.1 - WIP branch for the 18.1 series
161 staging/18.2 - WIP branch for the 18.2 series
165 - People are encouraged to test the staging branch and report
167 - The branch history is not stable and it **will** be rebased,
174 A branchpoint is made such that new development can continue in parallel
175 to stabilisation and bugfixing.
177 Note: Before doing a branch ensure that basic build and ``meson test``
178 testing is done and there are little to-no issues. Ideally all of those
179 should be tackled already.
181 Check if the version number is going to remain as, alternatively
182 ``git mv docs/relnotes/{current,new}.html`` as appropriate.
184 To setup the branchpoint:
188 git checkout master # make sure we're in master first
189 git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint"
192 $EDITOR VERSION # bump the version number
194 truncate docs/relnotes/new_features.txt
196 git push origin X.Y-branchpoint X.Y
199 `gitlab <https://gitlab.freedesktop.org/mesa/mesa/-/milestones>`__ and
200 add the new Mesa version X.Y.
202 Check that there are no distribution breaking changes and revert them if
203 needed. For example: files being overwritten on install, etc. Happens
204 extremely rarely - we had only one case so far (see commit
205 2ced8eb136528914e1bf4e000dea06a9d53c7e04).
212 These are the instructions for making a new Mesa release.
214 Get latest source files
215 ~~~~~~~~~~~~~~~~~~~~~~~
217 Ensure the latest code is available - both in your local master and the
222 Perform basic testing
223 ~~~~~~~~~~~~~~~~~~~~~
225 Most of the testing should already be done during the
226 `cherry-pick <#pickntest>`__ So we do a quick 'touch test'
229 - scons (from release tarball)
230 - the produced binaries work
232 Here is one solution:
236 __glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
237 __es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
238 __es2gears_cmd='es2gears_x11 2>&1 | grep -v "configuration file"'
239 test "x$LD_LIBRARY_PATH" != 'x' && __old_ld="$LD_LIBRARY_PATH"
240 export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/:"${__old_ld}"
241 export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/
242 export LIBGL_DEBUG=verbose
247 export LIBGL_ALWAYS_SOFTWARE=true
252 export LIBGL_ALWAYS_SOFTWARE=true
253 export GALLIUM_DRIVER=softpipe
259 unset LD_LIBRARY_PATH
260 test "x$__old_ld" != 'x' && export LD_LIBRARY_PATH="$__old_ld" && unset __old_ld
261 unset LIBGL_DRIVERS_PATH
263 unset LIBGL_ALWAYS_SOFTWARE
265 export VK_ICD_FILENAMES=`pwd`/test/usr/local/share/vulkan/icd.d/intel_icd.x86_64.json
266 steam steam://rungameid/570 -vconsole -vulkan
267 unset VK_ICD_FILENAMES
269 Create release notes for the new release
270 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272 The release notes are completely generated by the
273 ``bin/gen_release_notes.py`` script. Simply run this script before
274 bumping the version, and commit the results. The only thing left to do
275 is add the sha256 sums.
277 Increment the version contained in the file VERSION at Mesa's top-level,
278 then commit this change.
280 Commit these changes and push the branch.
286 Use the release.sh script from xorg `util-modular <https://cgit.freedesktop.org/xorg/util/modular/>`__
287 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
289 Start the release process.
293 ../relative/path/to/release.sh . # append --dist if you've already done distcheck above
295 Pay close attention to the prompts as you might be required to enter
296 your GPG and SSH passphrase(s) to sign and upload the files,
299 Add the sha256sums to the release notes
300 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
302 Edit docs/relnotes/X.Y.Z.html to add the sha256sum as available in the
303 mesa-X.Y.Z.announce template. Commit this change.
305 Back on mesa master, add the new release notes into the tree
306 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
308 Something like the following steps will do the trick:
312 git cherry-pick -x X.Y~1
313 git cherry-pick -x X.Y
319 ./bin/post_version.py X.Y.Z
321 , where X.Y.Z is the version you just made. This will updated
322 docs/relnotes.html, docs/index.html, and docs/release-calendar.html. It
323 will then generate a git commit automatically. Check that everything
324 looks correct and push:
328 git push origin master X.Y
335 Use the generated template during the releasing process.
337 Again, pay attention to add a note to warn about a final release in a
338 series, if that is the case.
345 Parse through the bug reports as listed in the docs/relnotes/X.Y.Z.html
346 document. If there's outstanding action, close the bug referencing the
347 commit ID which addresses the bug and mention the Mesa version that has
350 Note: the above is not applicable to all the reports, so use common