Releasing process
-
@@ -28,6 +29,7 @@
- Update Bugzilla
Overview
@@ -48,20 +50,24 @@ For example: Mesa 12.0.2 - 12.0 branch, bugfix +
Release schedule
Releases should happen on Fridays. Delays can occur although those should be keep
to a minimum.
+
+See our calendar for the
+date and other details for individual releases.
Feature releases
-
-
- Available approximatelly every three months. +
- Available approximately every three months.
- Initial timeplan available 2-4 weeks before the planned branchpoint (rc1) on the mesa-announce@ mailing list.
- A pre-release announcement should be available -approximatelly 24 hours before the final (non-rc) release. +approximately 24 hours before the final (non-rc) release.
Stable releases
@@ -69,7 +75,7 @@ approximatelly 24 hours before the final (non-rc) release.@@ -79,15 +85,24 @@ The final release from the 12.0 series Mesa 12.0.5 will be out around the same time (or shortly after) 13.0.1 is out.
+Cherry-picking and testing
Commits nominated for the active branch are picked as based on the criteria as described in the same section. +
+ ++Nomination happens in the mesa-stable@ mailing list. However, +maintainer is resposible of checking for forgotten candidates in the +master branch. This is achieved by a combination of ad-hoc scripts and +a casual search for terms such as regression, fix, broken and similar. +
-Maintainer is responsible for testing in various possible permutations of +Maintainer is also responsible for testing in various possible permutations of the autoconf and scons build.
@@ -101,36 +116,99 @@ release. This is made only with explicit permission/request, and the patch must be very well contained. Thus it cannot affect more than one driver/subsystem. +Currently Ilia Mirkin and AMD devs have requested "permanent" exception.
-- make distcheck, scons and scons check must pass
- Testing with different version of system components - LLVM and others is also performed where possible. +
- As a general rule, testing with various combinations of configure +switches, depending on the specific patchset.
+Achieved by combination of local ad-hoc scripts, mingw-w64 cross +compilation and AppVeyor plus Travis-CI, the latter as part of their +Github integration. +
+ ++For Windows related changes, the main contact point is Brian +Paul. Jose Fonseca can also help as a fallback contact. +
+-Achieved by combination of local ad-hoc scripts and AppVeyor plus Travis-CI, -the latter as part of their Github integration. +For Android related changes, the main contact is Tapani +Pälli. Mauro Rossi is collaborating with android-x86 and may +provide feedback about the build status in that project.
++For MacOSX related changes, Jeremy Huddleston Sequoia is currently a +good contact point. +
+ +
+Note: If a patch in the current queue needs any additional
+fix(es), then they should be squashed together.
+
+The commit messages and the cherry picked from
tags must be preserved.
+
+This should be noted in the pre-announce email. +
+ ++ git show b10859ec41d09c57663a258f43fe57c12332698e + + commit b10859ec41d09c57663a258f43fe57c12332698e + Author: Jonas Pfeil <pfeiljonas@gmx.de> + Date: Wed Mar 1 18:11:10 2017 +0100 + + ralloc: Make sure ralloc() allocations match malloc()'s alignment. + + The header of ralloc needs to be aligned, because the compiler assumes + ... + + (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14) + + Squashed with commit: + + ralloc: don't leave out the alignment factor + + Experimentation shows that without alignment factor gcc and clang choose + ... + + (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126) ++
Regression/functionality testing
Less often (once or twice), shortly before the pre-release announcement. Ensure that testing is redone if Intel devs have requested an exception, as per above.
+- no regressions should be observed for Piglit/dEQP/CTS/Vulkan on Intel platforms
- no regressions should be observed for Piglit using the swrast, softpipe and llvmpipe drivers
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.
++Installing the built driver from the pre-announced RC branch in the +system and making some every day's use until the release may be a good +idea too. +
+Making a branchpoint
@@ -170,15 +248,18 @@ To setup the branchpoint: Now go to Bugzilla and add the new Mesa version X.Y. +-Check for rare that there are no distribution breaking changes and revert them -if needed. Extremely rare - we had only one case so far (see -commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04). +Check that there are no distribution breaking changes and revert them if needed. +For example: files being overwritten on install, etc. Happens extremely rarely - +we had only one case so far (see commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04).
+Proceed to release -rc1.
+Pre-release announcement
@@ -192,18 +273,22 @@ release is made.
Terminology used
+- Nominated
Patch that is nominated but yet to to merged in the patch queue/branch.
- Queued
Patch is in the queue/branch and will feature in the next release. Barring reported regressions or objections from developers.
- Rejected
Patch does not fit the criteria and @@ -290,6 +375,12 @@ Queued (NUMBER) AUTHOR (NUMBER): COMMIT SUMMARY +For example: + +Jonas Pfeil (1): + ralloc: Make sure ralloc() allocations match malloc()'s alignment. +Squashed with + ralloc: don't leave out the alignment factor Rejected (NUMBER) ================= @@ -303,6 +394,7 @@ AUTHOR (NUMBER): Reason: ... +
Making a new release
@@ -310,18 +402,21 @@ These are the instructions for making a new Mesa release.
Get latest source files
+Ensure the latest code is available - both in your local master and the relevant branch.
Perform basic testing
+Most of the testing should already be done during the cherry-pick and pre-announce stages. - So we do a quick 'touch test' +
+- make distcheck (you can omit this if you're not using --dist below)
- scons (from release tarball)
@@ -333,6 +428,7 @@ Here is one solution that I've been using.
+ # Set MAKEFLAGS if you haven't already git clean -fXd; git clean -nxd read # quick cross check any outstanding files export __version=`cat VERSION` @@ -341,7 +437,12 @@ Here is one solution that I've been using. chmod 755 -fR $__build_root; rm -rf $__build_root mkdir -p $__build_root && cd $__build_root - $__mesa_root/autogen.sh --enable-llvm-shared-libs && make -j2 distcheck + # For the native builds - such as distcheck, scons, sanity test, you + # may want to specify which LLVM to use: + # export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config + + # Do a full distcheck + $__mesa_root/autogen.sh && make distcheck # Build check the tarballs (scons, linux) tar -xaf mesa-$__version.tar.xz && cd mesa-$__version @@ -349,12 +450,16 @@ Here is one solution that I've been using. cd .. && rm -rf mesa-$__version # Build check the tarballs (scons, windows/mingw) + # Temporary drop LLVM_CONFIG, unless you have a Windows/mingw one. + # save_LLVM_CONFIG=`echo $LLVM_CONFIG`; unset LLVM_CONFIG tar -xaf mesa-$__version.tar.xz && cd mesa-$__version scons platform=windows toolchain=crossmingw cd .. && rm -rf mesa-$__version # Test the automake binaries tar -xaf mesa-$__version.tar.xz && cd mesa-$__version + # Restore LLVM_CONFIG, if applicable: + # export LLVM_CONFIG=`echo $save_LLVM_CONFIG`; unset save_LLVM_CONFIG ./configure \ --with-dri-drivers=i965,swrast \ --with-gallium-drivers=swrast \ @@ -364,25 +469,26 @@ Here is one solution that I've been using. --enable-glx-tls \ --enable-gbm \ --enable-egl \ - --with-egl-platforms=x11,drm,wayland - make -j2 && DESTDIR=`pwd`/test make -j6 install + --with-platforms=x11,drm,wayland,surfaceless + make && DESTDIR=`pwd`/test make install __glxinfo_cmd='glxinfo 2>&1 | egrep -o "Mesa.*|Gallium.*|.*dri\.so"' __glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"' __es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"' __es2gears_cmd='es2gears_x11 2>&1 | grep -v "configuration file"' - export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/ + test "x$LD_LIBRARY_PATH" != 'x' && __old_ld="$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/:"${__old_ld}" export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/ export LIBGL_DEBUG=verbose eval $__glxinfo_cmd eval $__glxgears_cmd eval $__es2info_cmd eval $__es2gears_cmd - export LIBGL_ALWAYS_SOFTWARE=1 + export LIBGL_ALWAYS_SOFTWARE=true eval $__glxinfo_cmd eval $__glxgears_cmd eval $__es2info_cmd eval $__es2gears_cmd - export LIBGL_ALWAYS_SOFTWARE=1 + export LIBGL_ALWAYS_SOFTWARE=true export GALLIUM_DRIVER=softpipe eval $__glxinfo_cmd eval $__glxgears_cmd @@ -390,6 +496,7 @@ Here is one solution that I've been using. eval $__es2gears_cmd # Smoke test DOTA2 unset LD_LIBRARY_PATH + test "x$__old_ld" != 'x' && export LD_LIBRARY_PATH="$__old_ld" && unset __old_ld unset LIBGL_DRIVERS_PATH unset LIBGL_DEBUG unset LIBGL_ALWAYS_SOFTWARE @@ -414,6 +521,7 @@ be empty (TBD) at this point.
Two scripts are available to help generate portions of the release notes: +
./bin/bugzilla_mesa.sh @@ -430,18 +538,21 @@ to be included in the release notes.
Commit these changes and push the branch.
+git push origin HEAD
-Use the release.sh script from xorg util-macros
+Use the release.sh script from xorg util-modular
-Ensure that the mesa git tree is clean via
+git clean -fXd
and -start the release process. +Start the release process.+ # For the dist/distcheck, you may want to specify which LLVM to use: + # export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config ../relative/path/to/release.sh . # append --dist if you've already done distcheck above
@@ -453,7 +564,7 @@ and SSH passphrase(s) to sign and upload the files, respectively.Add the sha256sums to the release notes
-Edit docs/relnotes/X.Y.Z.html to add the sha256sums as availabe in the mesa-X.Y.Z.announce template. Commit this change. +Edit docs/relnotes/X.Y.Z.html to add the sha256sums as available in the mesa-X.Y.Z.announce template. Commit this change.
Back on mesa master, add the new release notes into the tree
@@ -468,17 +579,19 @@ Something like the following steps will do the trick:-Also, edit docs/relnotes.html to add a link to the new release notes, and edit -docs/index.html to add a news entry. Then commit and push: +Also, edit docs/relnotes.html to add a link to the new release notes, +edit docs/index.html to add a news entry, and remove the version from +docs/release-calendar.html. Then commit and push:
- git commit -as -m "docs: add news item and link release notes for X.Y.Z" + git commit -as -m "docs: update calendar, add news item and link release notes for X.Y.Z" git push origin master X.Y
Announce the release
+Use the generated template during the releasing process.
@@ -487,20 +600,8 @@ Use the generated template during the releasing process.Update the mesa3d.org website
-NOTE: The recent release managers have not been performing this step -themselves, but leaving this to Brian Paul, (who has access to the -sourceforge.net hosting for mesa3d.org). Brian is more than willing to grant -the permission necessary to future release managers to do this step on their -own. -
- --Update the web site by copying the docs/ directory's files to -/home/users/b/br/brianp/mesa-www/htdocs/ with: -
--sftp USERNAME,mesa3d@web.sourceforge.net -
+As the hosting was moved to freedesktop, git hooks are deployed to update the +website. Manually check that it is updated 5-10 minutes after the finalgit push