| How to do a GTK+ release? |
| ========================= |
| |
| Make sure you have suitable versions of autoconf and libtool. |
| Also make sure you have the following packages installed with all their |
| dependencies: |
| * gtk-doc |
| * docbook-utils |
| Without those packages make distcheck will *not* pass. |
| Make sure that gtk-doc is the latest released version. |
| |
| |
| 0) Go back to a pristine working directory. With git, this works: |
| |
| git clean -f -x |
| |
| 1) autogen and build it, make sure to enable docs by specifying |
| --enable-gtk-doc --enable-man |
| |
| 2) Update NEWS based on the content of git log; follow the format |
| of prior entries. This includes finding noteworthy new features, |
| collecting summaries for all the fixed bugs that are referenced |
| and collecting all updated translations. |
| Also collect the names of all contributors that are mentioned. |
| We don't discriminate between bug reporters, patch writers, |
| committers, etc. Anybody who is mentioned in ChangeLog gets |
| credits, but only real names, not email addresses or nicknames. |
| |
| 3) Update the pot files and commit the changes: |
| |
| make -C po gtk30.pot |
| make -C po-properties gtk30-properties.pot |
| |
| 4) In particular, if this is a major, stable, release, verify that |
| README.in contains the relevant release notes and that the |
| required versions of dependencies in INSTALL.in are in sync |
| with configure.ac. |
| |
| 5) Verify that the version in configure.ac has been bumped after the last |
| release. (Note that this is critical, a slip-up here will cause the |
| soname to change). |
| |
| 6) Make sure that make check is happy (If you don't do it here, make distcheck |
| will also catch it, but it is kind of disheartening to see make distcheck |
| fail due to an extraneous symbol after watching it build the docs for an |
| hour...). |
| Typical problems to expect here (depending on whether this is a devel |
| snapshot or a stable release): |
| * forgotten source files |
| * new symbols missing from .symbols files |
| * symbols that are exported by should be private (static or _-prefixed) |
| * symbols that cause PLT entries. This is either caused by using a function |
| in the same library function without including the header or by using a |
| function from a different library, which is not yet allowed by the filter |
| in pltcheck.sh |
| |
| 7) If this is a devel release, make sure that the docs for new symbols |
| are in good shape. Look at the -unused.txt files and add stuff found |
| there to the corresponding -sections.txt file. Look at the |
| -undocumented.txt files and see if there is anything in there that |
| should be documented. If it is, this may be due to typos in the doc |
| comments in the source. Make sure that all new symbols have proper |
| Since: tags, and that there is an index in the main -docs.sgml for |
| the next stable version. |
| |
| 8) make distcheck |
| |
| 9) Fix broken stuff found by 8), commit changes: git commit -a, repeat. |
| |
| 10) Once distcheck succeeds, verify that the tree is clean: git diff should |
| come up empty. |
| |
| 10) Now you've got the tarball. Check that the tarball size looks |
| reasonable compared to previous releases. If the size goes down |
| a lot, likely the docs went missing for some reason. Or the translations. |
| If the size goes up by a lot, something else may be wrong. |
| |
| 11) Tag the release. The git command for doing that looks like |
| |
| git tag -m "GTK+ 2.12.10" 2.12.10 |
| |
| 12) Push the tagged commit upstream. The git command for doing that is |
| |
| git push origin refs/tags/2.12.10 |
| |
| 13) Bump the version number in configure.ac and commit and push this change |
| |
| 14) Upload the tarball to master.gnome.org and run install-module to transfer |
| it to download.gnome.org. If you don't have an account on master.gnome.org, |
| find someone who can do it for you. The command for this looks like |
| |
| scp gtk+-2.12.10.tar.xz matthiasc@master.gnome.org: |
| ssh matthiasc@master.gnome.org ftpadmin install gtk+-2.12.10.tar.xz |
| |
| 15) Upload the tarball and checksum to ftp.gtk.org and put them in the right |
| directory below /ftp/pub. Pay attention to correct ownership, and don't |
| forget to update the LATEST file in the directory. |
| |
| 16) Go to the gnome-announce list archives, find the last announce message, |
| create a new message in the same form, replacing version numbers, |
| commentary at the top about "what this release is about" and the |
| summary of changes. |
| |
| 17) Send it to gnome-announce-list, gtk-list, gtk-app-devel-list and |
| gtk-devel-list. Set reply-to to desktop-devel-list. |
| |
| 18) Add a link to the release announcement to www.gtk.org which lives |
| in the gtk-web git module. |