Blame docs/RELEASE-HOWTO

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