| 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 should either pass or skip. |
| |
| $ make check |
| |
| 1. For Weston, verify that the wayland and wayland-protocols version |
| dependencies are correct, and that wayland-protocols has had a |
| release with any needed protocol updates. |
| |
| 2. Update the first stanza of configure.ac to the intended versions |
| for Weston and libweston. |
| |
| For Weston's x.y.0 releases, if libweston_major_version is greater than |
| weston_major_version, bump the Weston version numbers (major, minor, |
| micro) to match the libweston version numbers (major, minor, patch). |
| |
| Additionally for all Weston releases, if libweston's |
| major.minor.patch version is less than Weston's major.minor.micro |
| version, bump libweston version numbers to match the Weston |
| version numbers. |
| |
| Weston releases are made with the Weston version number, not with the |
| libweston version number. |
| |
| Then commit your changes: |
| |
| $ export RELEASE_NUMBER="x.y.z" |
| $ export RELEASE_NAME="[alpha|beta|RC1|RC2|official|point]" |
| $ git status |
| $ git commit configure.ac -m "configure.ac: bump to version $RELEASE_NUMBER for the $RELEASE_NAME release" |
| $ git push |
| |
| 3. For Weston releases, install Xwayland, either from your distro or |
| manually (see http://wayland.freedesktop.org/building.html). If |
| you install it to a location other than /usr/bin/Xwayland, specify |
| this in the following env var: |
| |
| XWAYLAND=$(which Xwayland) # Or specify your own path |
| export DISTCHECK_CONFIGURE_FLAGS="--with-xserver-path=$XWAYLAND" |
| |
| If you're using a locally installed libinput or other dependency |
| libraries, you'll likely need to set a few other environment |
| variables: |
| |
| export WLD="<path-to-your-local-installation>" |
| export LD_LIBRARY_PATH=$WLD/lib |
| export PKG_CONFIG_PATH=$WLD/lib/pkgconfig:$WLD/share/pkgconfig/ |
| |
| 4. 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. |
| |
| $ release.sh . |
| |
| For Wayland official and point releases, also publish the publican |
| documentation to wayland.freedesktop.org: |
| |
| $ ./publish-doc |
| |
| 5. Compose the release announcements. The script will generate |
| *.x.y.z.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. |
| |
| 6. pgp sign the release announcements and send them to |
| wayland-devel@lists.freedesktop.org |
| |
| 7. Update releases.html in wayland-web with links to tarballs and |
| the release email URL. |
| |
| The wl_register_release script in wayland-web will generate an HTML |
| snippet that can be pasted into releases.html (or e.g. in emacs |
| insert it via "C-u M-! scripts/wl_register_release x.y.z") and |
| customized. |
| |
| Once satisfied: |
| |
| $ git commit ./releases.html -m "releases: Add ${RELEASE_NUMBER} release" |
| $ git push |
| $ ./deploy |
| |
| 8. Update topic in #wayland to point to the release announcement URL |
| |
| For x.y.0 releases, also create the release series x.y branch. The x.y |
| branch is for bug fixes and conservative changes to the x.y.0 release, |
| and is where we create 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 [sha] |
| $ git push origin x.y |
| |
| The master branch's configure.ac version should always be (at least) |
| x.y.90, with x.y being the most recent stable branch. The stable |
| branch's configure.ac 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. |