Planning/ReleaseProcess
QEMU Release Process
QEMU releases are periodically made from a particular branch of git://git.qemu.org/qemu.git, generally either for a new major release (e.g. QEMU v1.7.0), a release candidate for an upcoming major release (e.g. QEMU v1.7.0-rc0), or a stable/bugfix update to a previous major release (e.q. QEMU 1.7.1).
This page documents the steps that should be taken to produce these releases.
Locally check out the branch you intend to generate a release for:
git checkout <my_branch>
Update qemu.git/VERSION to reflect the version being released. This should have a single line of the following form:
v<major_version>.<minor_version>.<revision>[-rc<release_candidate_number>]
For example:
v1.7.0-rc0 v1.7.0-rc1 v1.7.0 v1.7.1
We will use v1.7.1 as an example for the following steps:
Commit this change to qemu.git/VERSION with a commit of the form:
git add VERSION git commit -s -m "Update VERSION for v1.7.1"
Tag this commit with a tag of the following form:
git tag v1.7.0
Push your branch to git://git.qemu.org/qemu.git (contact stefanha@redhat.com for commit access). Alternatively, have someone with commit access pull these changes from staging branch hosted elsewhere. This should take the following form:
git push origin HEAD:<upstream_branch>
where <upsteam_branch> should be "master" for major releases or release candidates thereof, and "stable-<major>.<minor>" for a stable revision of a previous major release (note: both v1.7.1 and v1.7.2 release branches would get push to "stable-1.7" branch, for instance). In this case, since we're doing a major release in this example (v1.7.0), we'd update the upstream master branch:
git push origin HEAD:master
Push your tag to git://git.qemu.org/qemu.git (see above for notes regarding commit access)
git push origin v1.7.0
With the code/changes committed/tagged in the official repository, we can now generate the release. A script is provided to handle generating the tarball, simply run:
make qemu-1.7.0.tar.bz2
This should work for any version string that matches the forms noted earlier (with the leading "v" omitted)
Some sanity-checking should be performed on the tarball in case there is an issue with the tarball script
Sign the resulting tarball with GPG:
gpg -b qemu-1.7.0.tar.bz2
This will generate a signature file named qemu-1.7.0.tar.bz2.sig
Upload the tarball and signature file to qemu.org
Files should be uploaded to /var/www/download.
Update/add a link to the file in git://git.qemu.org/qemu-web.git (file _data/releases.yml)
For example:
- branch: 2.9 patch: 0-rc1 date: "Apr 1 2017"
Create an announcement email and submit to qemu-devel@nongnu.org. Cc: qemu-stable@nongnu.org if it is a stable revision/release. See the following for an example of what this should look like:
v1.7.0-rc2: http://lists.gnu.org/archive/html/qemu-devel/2013-11/msg03419.html v1.7.0: http://lists.gnu.org/archive/html/qemu-devel/2013-12/msg01770.html v1.7.1 (note that this gentleman forgot to include the changelog in the initial announcement): https://lists.gnu.org/archive/html/qemu-devel/2014-03/msg04767.html v1.6.2 (which includes a proper changelog): http://lists.gnu.org/archive/html/qemu-stable/2013-12/msg00148.html
Major releases should be submitted to lwn.net for reporting:
v1.6.0: http://lwn.net/Articles/563702/