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