|  |  |  | To make a release of Weston and/or Wayland, follow these steps.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   0.  Verify the test suites and codebase checks pass.  All of the
 | 
					
						
							|  |  |  |       tests pass should either pass or skip.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $ make check
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   1.  Update the first three lines of configure.ac to the intended
 | 
					
						
							|  |  |  |       version, commit.  Also note that Weston includes versioned
 | 
					
						
							|  |  |  |       dependencies on 'wayland-server' and 'wayland-client' in
 | 
					
						
							|  |  |  |       configure.ac which typically need updated as well.  Then commit
 | 
					
						
							|  |  |  |       your changes:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $ git status
 | 
					
						
							|  |  |  |       $ git commit configure.ac -m "configure.ac: bump to version x.y.z for the xxx release"
 | 
					
						
							|  |  |  |       $ git push
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   2.  Run the release.sh script to generate the tarballs, sign and
 | 
					
						
							|  |  |  |       upload them, and generate a release announcement template.
 | 
					
						
							|  |  |  |       This script can be obtained from X.org's modular package:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         http://cgit.freedesktop.org/xorg/util/modular/tree/release.sh
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The script supports a --dry-run option to test it without actually
 | 
					
						
							|  |  |  |       doing a release.  If the script fails on the distcheck step due to
 | 
					
						
							|  |  |  |       a testsuite error that can't be fixed for some reason, you can
 | 
					
						
							|  |  |  |       skip testsuite by specifying the --dist argument.  Pass --help to
 | 
					
						
							|  |  |  |       see other supported options.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   3.  Compose the release announcements.  The script will generate
 | 
					
						
							|  |  |  |       *.x.y.0.announce files with a list of changes and tags, one for
 | 
					
						
							|  |  |  |       wayland, one for weston.  Prepend these with a human-readable
 | 
					
						
							|  |  |  |       listing of the most notable changes.  For x.y.0 releases, indicate
 | 
					
						
							|  |  |  |       the schedule for the x.y+1.0 release.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   4.  Send the release announcements to
 | 
					
						
							|  |  |  |       wayland-devel@lists.freedesktop.org
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   5.  Get your freshly posted release email URL from
 | 
					
						
							|  |  |  |       http://lists.freedesktop.org/archives/wayland-devel/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   6.  Update releases.html in wayland-web with links to tarballs and
 | 
					
						
							|  |  |  |       the release email URL.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $ git commit releases.html -m "Add x.y.z release"
 | 
					
						
							|  |  |  |       $ git push
 | 
					
						
							|  |  |  |       $ rsync -avz * wayland.freedesktop.org:/srv/wayland.freedesktop.org/www/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   7.  Update topic in #wayland to point to the release announcement URL
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For x.y.0 releases, also create the x.y branch.  The x.y branch is for
 | 
					
						
							|  |  |  | bug fixes and conservative changes to the x.y.0 release, and is where
 | 
					
						
							|  |  |  | we release x.y.z releases from.  Creating the x.y branch opens up
 | 
					
						
							|  |  |  | master for new development and lets new development move on.  We've
 | 
					
						
							|  |  |  | done this both after the x.y.0 release (to focus development on bug
 | 
					
						
							|  |  |  | fixing for the x.y.1 release for a little longer) or before the x.y.0
 | 
					
						
							|  |  |  | release (like we did with the 1.5.0 release, to unblock master
 | 
					
						
							|  |  |  | development early). 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $ git branch x.y
 | 
					
						
							|  |  |  |     $ git push origin x.y
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The master branch configure.ac version should always be (at least)
 | 
					
						
							|  |  |  | x.y.90, with x.y being the most recent stable branch.  Stable branch
 | 
					
						
							|  |  |  | configure version is just whatever was most recently released from
 | 
					
						
							|  |  |  | that branch.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For stable branches, we commit fixes to master first, then cherry-pick
 | 
					
						
							|  |  |  | them back to the stable branch.
 |