1 How to do a GTK+ release?
2 =========================
4 Make sure you have suitable versions of autoconf and libtool.
5 Also make sure you have the following packages installed with all their
9 Without those packages make distcheck will *not* pass.
10 Make sure that gtk-doc is the latest released version.
13 0) Go back to a pristine working directory. With git, this works:
17 1) autogen and build it, make sure to enable docs by specifying
18 --enable-gtk-doc --enable-man
20 2) Update NEWS based on the content of git log; follow the format
21 of prior entries. This includes finding noteworthy new features,
22 collecting summaries for all the fixed bugs that are referenced
23 and collecting all updated translations.
24 Also collect the names of all contributors that are mentioned.
25 We don't discriminate between bug reporters, patch writers,
26 committers, etc. Anybody who is mentioned in ChangeLog gets
27 credits, but only real names, not email addresses or nicknames.
29 3) Update the pot files and commit the changes:
32 make -C po-properties gtk30-properties.pot
34 4) In particular, if this is a major, stable, release, verify that
35 README.in contains the relevant release notes and that the
36 required versions of dependencies in INSTALL.in are in sync
39 5) Verify that the version in configure.ac has been bumped after the last
40 release. (Note that this is critical, a slip-up here will cause the
43 6) Make sure that make check is happy (If you don't do it here, make distcheck
44 will also catch it, but it is kind of disheartening to see make distcheck
45 fail due to an extraneous symbol after watching it build the docs for an
47 Typical problems to expect here (depending on whether this is a devel
48 snapshot or a stable release):
49 * forgotten source files
50 * new symbols missing from .symbols files
51 * symbols that are exported by should be private (static or _-prefixed)
52 * symbols that cause PLT entries. This is either caused by using
53 a in the same library function without including the header or by
54 using a function from a different library, which is not yet allowed
55 by the filter in pltcheck.sh
57 7) If this is a devel release, make sure that the docs for new symbols
58 are in good shape. Look at the -unused.txt files and add stuff found
59 there to the corresponding -sections.txt file. Look at the
60 -undocumented.txt files and see if there is anything in there that
61 should be documented. If it is, this may be due to typos in the doc
62 comments in the source. Make sure that all new symbols have proper
63 Since: tags, and that there is an index in the main -docs.sgml for
64 the next stable version.
68 9) Fix broken stuff found by 8), commit changes: git commit -a, repeat.
70 10) Once distcheck succeeds, verify that the tree is clean: git diff should
73 10) Now you've got the tarball. Check that the tarball size looks
74 reasonable compared to previous releases. If the size goes down
75 a lot, likely the docs went missing for some reason. Or the translations.
76 If the size goes up by a lot, something else may be wrong.
78 11) Tag the release. The git command for doing that looks like
80 git tag -m "GTK+ 2.12.10" 2.12.10
82 12) Push the tagged commit upstream. The git command for doing that is
84 git push origin refs/tags/2.12.10
86 13) Bump the version number in configure.ac and commit and push this change
88 14) Upload the tarball to master.gnome.org and run install-module to transfer
89 it to download.gnome.org. If you don't have an account on master.gnome.org,
90 find someone who can do it for you. The command for this looks like
92 scp gtk+-2.12.10.tar.gz matthiasc@master.gnome.org:
93 ssh matthiasc@master.gnome.org
94 install-module gtk+-2.12.10.tar.gz
96 15) Get the .bz2 tarball and the .md5sum files back from master.gnome.org
97 You can probably also create it locally, but I've experienced md5
98 mismatches when doing so.
100 16) Upload the .gz and .bz2 tarballs and checksums to ftp.gtk.org and put
101 them in the right directory below /ftp/pub. Pay attention to correct
102 ownership, and don't forget to update the LATEST file in the directory.
104 17) Go to the gnome-announce list archives, find the last announce message,
105 create a new message in the same form, replacing version numbers,
106 commentary at the top about "what this release is about" and the
109 18) Send it to gnome-announce-list, gtk-list, gtk-app-devel-list and
110 gtk-devel-list. Set reply-to to desktop-devel-list.
112 19) Add a link to the release announcement to www.gtk.org which lives
113 in the gtk-web git module.