RELEASE-HOWTO 4.53 KB
Newer Older
1 2 3
How to do a GTK+ release?
=========================

Matthias Clasen's avatar
Matthias Clasen committed
4
Make sure you have suitable versions of autoconf and libtool.
Kristian Rietveld's avatar
Kristian Rietveld committed
5
Also make sure you have the following packages installed with all their
Matthias Clasen's avatar
Matthias Clasen committed
6
dependencies:
Kristian Rietveld's avatar
Kristian Rietveld committed
7 8 9
* gtk-doc
* docbook-utils
Without those packages make distcheck will *not* pass.
Matthias Clasen's avatar
Matthias Clasen committed
10
Make sure that gtk-doc is the latest released version.
11 12


13
 0) Go back to a pristine working directory. With git, this works:
Matthias Clasen's avatar
Matthias Clasen committed
14

15 16 17
    git clean -f -x

 1) autogen and build it, make sure to enable docs by specifying
Matthias Clasen's avatar
Matthias Clasen committed
18 19
    --enable-gtk-doc --enable-man

20
 2) Update NEWS based on the content of git log; follow the format
Matthias Clasen's avatar
Matthias Clasen committed
21 22
    of prior entries. This includes finding noteworthy new features,
    collecting summaries for all the fixed bugs that are referenced
23 24 25
    and collecting all updated translations.
    Also collect the names of all contributors that are mentioned.
    We don't discriminate between bug reporters, patch writers,
Matthias Clasen's avatar
Matthias Clasen committed
26 27 28
    committers, etc. Anybody who is mentioned in ChangeLog gets
    credits, but only real names, not email addresses or nicknames.

29 30 31 32 33 34
 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
Matthias Clasen's avatar
Matthias Clasen committed
35 36
    README.in contains the relevant release notes and that the
    required versions of dependencies in INSTALL.in are in sync
37
    with configure.ac.
Matthias Clasen's avatar
Matthias Clasen committed
38

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
Matthias Clasen's avatar
Matthias Clasen committed
41 42
    soname to change).

43
 6) Make sure that make check is happy (If you don't do it here, make distcheck
44 45 46 47
    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
Matthias Clasen's avatar
Matthias Clasen committed
48 49 50 51
    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)
Matthias Clasen's avatar
Matthias Clasen committed
52 53 54 55
    * symbols that cause PLT entries. This is either caused by using
      a 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
Matthias Clasen's avatar
Matthias Clasen committed
56

57
 7) If this is a devel release, make sure that the docs for new symbols
Matthias Clasen's avatar
Matthias Clasen committed
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
Matthias Clasen's avatar
Matthias Clasen committed
60 61
    -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
62 63 64
    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.
Matthias Clasen's avatar
Matthias Clasen committed
65

66
 8) make distcheck
Matthias Clasen's avatar
Matthias Clasen committed
67

68
 9) Fix broken stuff found by 8), commit changes: git commit -a, repeat.
Matthias Clasen's avatar
Matthias Clasen committed
69

70 71
10) Once distcheck succeeds, verify that the tree is clean: git diff should
    come up empty.
Matthias Clasen's avatar
Matthias Clasen committed
72

73
10) Now you've got the tarball. Check that the tarball size looks
Matthias Clasen's avatar
Matthias Clasen committed
74
    reasonable compared to previous releases. If the size goes down
Matthias Clasen's avatar
Matthias Clasen committed
75 76
    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.
Matthias Clasen's avatar
Matthias Clasen committed
77

78 79 80
11) Tag the release. The git command for doing that looks like

    git tag -m "GTK+ 2.12.10" 2.12.10
Matthias Clasen's avatar
Matthias Clasen committed
81

82
12) Push the tagged commit upstream. The git command for doing that is
Matthias Clasen's avatar
Matthias Clasen committed
83

84
    git push origin refs/tags/2.12.10
Matthias Clasen's avatar
Matthias Clasen committed
85

86
13) Bump the version number in configure.ac and commit and push this change
87 88

14) Upload the tarball to master.gnome.org and run install-module to transfer
Matthias Clasen's avatar
Matthias Clasen committed
89 90
    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
91

92 93
      scp gtk+-2.12.10.tar.xz matthiasc@master.gnome.org:
      ssh matthiasc@master.gnome.org ftpadmin install gtk+-2.12.10.tar.xz
Matthias Clasen's avatar
Matthias Clasen committed
94

95 96 97
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.
98

99
16) Go to the gnome-announce list archives, find the last announce message,
100 101 102
    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.
Matthias Clasen's avatar
Matthias Clasen committed
103

104
17) Send it to gnome-announce-list, gtk-list, gtk-app-devel-list and
105
    gtk-devel-list. Set reply-to to desktop-devel-list.
Matthias Clasen's avatar
Matthias Clasen committed
106

107
18) Add a link to the release announcement to www.gtk.org which lives
108
    in the gtk-web git module.