Home | About | Community | Download | Documentation | Planet |
Maintainer documentation
- Maintainer documentation
- Release checklist
- Update the Bluetooth wiki page
- Bump sonames
- (final release only) Update NEWS or README
- (pavucontrol & paprefs) Update the version number in configure.ac or meson.build
- Tag the last commit locally (don't make the tag public yet)
- Generate the tarball
- Check that all new files are included in the tarball
- Test the tarball
- Upload the tarball
- Push the tag
- (final release only) Add git shortlog to the release notes.
- (final release only) If the release notes are marked as a draft, remove that marking.
- Announce the release on the mailing list
- (final release only) Add a news item to the web site front page
- (pavucontrol & paprefs) Upload README.html
- Update the channel topic in IRC
- (final release only) Refresh the online Doxygen documentation
- (final release only) Rebase and push the contents from the "next" branch to "master"
- (final release only) Create a release on Gitlab
- (final release only) Close the old release milestone and create another
Release checklist
-
Fix all release blocker bugs
-
Check the bug list in case there's still some bug that should be a release blocker
-
As a smoke test, run the current git master version on your own machine for a while
- Check that the "since" tags in the Doxygen documentation are correct
It's relatively easy to forget to add the "since" tags in the Doxygen documentation, or to have a wrong version in them (for example, a patch is submitted that is targeted for 4.0, but it ends up merged during the 5.0 cycle). It's pretty easy to check that the tags are correct by diffing the public headers since the last release.
git diff v5.0..master -- src/pulse/*.h
Before running that command, change "v5.0" to point to the last released version.
Update the Bluetooth wiki page
The page has a history section detailing what significant bluetooth related changes each version has, so document the bluetooth changes of the new release. Other sections may need updating as well.
Bump sonames
We have currently three public API libraries: libpulse, libpulse-simple and libpulse-mainloop-glib (if new ones have been added, please update this wiki page). The "sonames" of those libraries need to be bumped before each release (release candidates are releases too in this context). The soname versions are defined in configure.ac. The definitions for v4.0 look as follows:
AC_SUBST(LIBPULSE_VERSION_INFO, [16:2:16])
AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:4:0])
AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:4:0])
Rules for bumping "X:Y:Z":
- If there are backwards incompatible changes to the library binary interface, something went wrong. We don't break the ABIs.
- If there are backwards compatible changes to the library binary interface, increment X and Z by one, and set Y to zero.
- If there are no interface changes, but there are changes to the implementation, increment Y by one.
- If there are no changes at all in the library, don't touch the version.
Library changes can be found easily by viewing only changes that affect files under src/pulse. For example:
gitk v7.0...master -- src/pulse
(final release only) Update NEWS or README
For pavucontrol, update the metainfo file with release notes.
In case of pavucontrol and paprefs, there's no NEWS file, but you should add a news item to doc/README.html.in.
Git shortlog can be used to generate the contributor list that we add to the entries in NEWS:
git shortlog -s v14.0..HEAD | cut -f2
(pavucontrol & paprefs) Update the version number in configure.ac or meson.build
Tag the last commit locally (don't make the tag public yet)
Make sure your master
is the same origin/master
! This may not be the case if you have some commits locally that were merged by Marge Bot.
Create a signed tag:
git tag -s -m "PulseAudio 4.99.1" v4.99.1 master
git clean -xdf # Beware, this will wipe everything that isn't stored in git!
You'll need to have a GPG key with the default e-mail address configured in git.
The clean command is needed, because otherwise the tarball will have wrong version in its file name (and quite possibly the wrong version will appear elsewhere too). The version number is cached somewhere, and even rerunning ./configure doesn't update it.
Generate the tarball
pulseaudio, pavucontrol & paprefs
meson dist -C build --formats=gztar,xztar
That will create a .tar.gz file and a .tar.xz file and corresponding checksum files in build/meson-dist.
Check that all new files are included in the tarball
git ls-files > /tmp/file-list-new # Generate the file list for the new release
git checkout v10.0 # Check out the previous release
git ls-files > /tmp/file-list-old # Generate the file list for the previous release
diff -u /tmp/file-list-old /tmp/file-list-new # Compare the file lists
Check what files have been added. Are they all included in the tarball?
Test the tarball
Upload the tarball
pulseaudio
scp build/meson-dist/pulseaudio-*.tar.* annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/releases
pavucontrol
scp pavucontrol-*.tar.* annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/pavucontrol
paprefs
scp build/meson-dist/paprefs-*.tar.* annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/paprefs
Push the tag
git push origin v4.99.1
(final release only) Add git shortlog to the release notes.
Proofreading the release notes at this point is a good idea too.
(final release only) If the release notes are marked as a draft, remove that marking.
Announce the release on the mailing list
(final release only) Add a news item to the web site front page
(pavucontrol & paprefs) Upload README.html
pavucontrol
scp doc/README.html annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/pavucontrol/
paprefs
scp build/doc/README.html annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/paprefs/
Update the channel topic in IRC
/msg ChanServ set #pulseaudio topic You must be registered to talk | Stable release: 16.1 | Troubleshooting: https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Users/Troubleshooting/
(final release only) Refresh the online Doxygen documentation
ninja -C build doxygen
rsync -av --delete-after build/doxygen/html/ annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/pulseaudio/doxygen/
(final release only) Rebase and push the contents from the "next" branch to "master"
Remove the "next" branch afterwards.