summaryrefslogtreecommitdiffstats
path: root/Admin/release-steps
blob: 716581b5fd56477ac96257a7f9b839da2090ff90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
-*- outline -*-
Here are most of the steps we (maintainers) follow when making a release.
We assume that the following environment variables are set:

  GPG_KEY_ID - your gpg key ID
  CURRENT_VERSION - the next release version
  PREVIOUS_VERSION - the previous release version

* Making a snapshot release

** Update 'gnulib' git submodule:

    git submodule foreach git pull origin master
    git add gnulib
    git commit -m 'Update gnulib'

** Run these commands, in this order:

    ./autogen.sh
    ./configure
    make
    make dist

    # To prevent auto-updating '.version' file by GNUmakefile due to
    # regenerated PO files, specify Makefile manually.
    make -f Makefile distcheck

  Then you will get a distribution tarball:

    gettext-$CURRENT_VERSION-*.tar.xz

  Rename it e.g. gettext-ss.tar.xz

** Test the snapshot tarball.  If it seems good, then upload to
  alpha.gnu.org:

    gnulib/build-aux/gnupload --to alpha.gnu.org:gettext \
                              gettext-ss.tar.xz

  Notify translators and testers, by sending an email to:

    coordinator@translationproject.org
    platform-testers@gnu.org

* Making an official release

** Create a branch for release

    git checkout -b release-$CURRENT_VERSION

** Update files:

  - gettext-runtime/ABOUT-NLS
  - gettext-runtime/doc/matrix.texi

    Update with information from the Translation Project, by running
    run.sh in gettext-runtime/doc/Admin/.  Copy resulting matrix.texi
    into gettext-runtime/doc/, and gettext-runtime/ABOUT-NLS will be
    automatically regenerated in the next build process.

  - gettext-runtime/intl/locale.alias

    Update with glibc's intl/locale.alias.

  - gettext-runtime/intl/localcharset.h
  - gettext-runtime/intl/localcharset.c
  - gettext-runtime/intl/config.charset

    Update with libcharset inside libiconv.  Check that
    gnulib/lib/{localcharset.h,localcharset.c,config.charset} agree
    with it, except for copyright header changes.

  - gettext-runtime/po/Makefile.in.in

    Update Origin version.

  - gettext-runtime/m4/*.m4

    Update version at the first line.

  - gettext-runtime/intl/libgnuintl.in.h

    Update LIBINTL_VERSION.

  - gettext-tools/libgettextpo/gettext-po.in.h

    Update LIBGETTEXTPO_VERSION.

  - gettext-runtime/intl/Makefile.in
  - gettext-tools/libgettextpo/Makefile.am

    Update -version-info arguments, according to libtool versioning
    (info "(libtool) Updating version info").

      * increment LTV_REVISION,
      * if any functions/classes have been added, removed or changed, increment
        LTV_CURRENT and set LTV_REVISION to 0,
      * if any functions/classes have been added, increment LTV_AGE,
      * if backwards compatibility has been broken, set LTV_AGE to 0.

  - gettext-tools/misc/po-mode.el

    Update po-mode-version-string, if there is any change.

  - NEWS
  - gettext-runtime/libasprintf/NEWS
  - gettext-runtime/NEWS

    Add news entries if any.

  - djgpp/*

    Update to the latest upstream.

** Update autopoint related files:

  - gettext-tools/configure.ac

    Update ARCHIVE_VERSION.

  - gettext-tools/misc/autopoint.in

    Update the 'case' statement around line 371 to include the latest release.

** Once you get enough translation updates, update translations:

    rsync -Lrtvz translationproject.org::tp/latest/gettext-runtime/ \
          gettext-runtime/po
    rsync -Lrtvz translationproject.org::tp/latest/gettext-tools/ \
          gettext-tools/po
    rsync -Lrtvz translationproject.org::tp/latest/gettext-examples/ \
          gettext-tools/examples/po

  Adjust LINGUAS files if any of the languages has been added or
  removed since the last release.  Commit the changes.

** Create a release:

    git clean -xdff
    git checkout .

    git commit --allow-empty -m "Release $CURRENT_VERSION"
    git tag -u $GPG_KEY_ID $CURRENT_VERSION

    ./autogen.sh
    ./configure
    make distcheck-hook
    make
    make dist
    (cd gettext-tools/misc
     ./add-to-archive ../../gettext-$CURRENT_VERSION.tar.gz)

    # To prevent auto-updating '.version' file by GNUmakefile due to
    # regenerated PO files, specify Makefile manually.
    make -f Makefile distcheck

** Upload tarballs:

    gnulib/build-aux/gnupload --to ftp.gnu.org:gettext \
                              gettext-$CURRENT_VERSION.tar.{gz,xz,lz}

** Merge release-$CURRENT_VERSION branch to master and push the changes to the
   remote repository:

    git checkout master
    git merge release-$CURRENT_VERSION
    git push origin master
    git push origin release-$CURRENT_VERSION

** Upload autopoint archive to alpha.gnu.org:

  This is needed to compile git master after the release (as
  autogen.sh fetches the archive).

    xz gettext-tools/misc/archive.dir.tar
    cp gettext-tools/misc/archive.dir.tar.xz archive.dir-$CURRENT_VERSION.tar.xz
    gnulib/build-aux/gnupload \
      --to alpha.gnu.org:gettext \
      --symlink-regex archive.dir-$CURRENT_VERSION.tar.xz

** Update the homepage on www.gnu.org:

  - Bump the version number in gettext.html.
  - Update FAQ.html from gettext-tools/doc/FAQ.html.

** Regenerate the documentation for www.gnu.org:

    cp gnulib/build-aux/gendocs.sh gettext-tools/doc
    cp gnulib/doc/gendocs_template gettext-tools/doc
    cp -p gettext-runtime/doc/*.texi gettext-tools/doc
    cp build-aux/texinfo.tex gettext-tools/doc
    (cd gettext-tools/doc
     LC_ALL=C ./gendocs.sh --email bug-gnu-gettext gettext "GNU gettext")

    cp gnulib/build-aux/gendocs.sh gettext-runtime/libasprintf
    cp gnulib/doc/gendocs_template gettext-runtime/libasprintf
    cp build-aux/texinfo.tex gettext-runtime/libasprintf
    (cd gettext-runtime/libasprintf
     LC_ALL=C ./gendocs.sh --email bug-gnu-gettext autosprintf "GNU autosprintf")

  FIXME: Add a script to automate this process.

  Copy the resulting manual/ directories.  Commit the resulting
  manual/ directories in CVS, and for every removed HTML file (that
  corresponds to a deleted node) add a line to the .symlinks file in
  the same directory.

** Announce on info-gnu

  The announcement template can be generated with:

    gnulib/build-aux/announce-gen \
      --release-type stable \
      --package-name gettext \
      --previous-version $PREVIOUS_VERSION \
      --current-version $CURRENT_VERSION \
      --gpg-key-id $GPG_KEY_ID \
      --url-directory ftp://ftp.gnu.org/gnu/gettext \
      --bootstrap-tools=autoconf,automake,libtool,bison,gnulib \
      --gnulib-version=$(cd gnulib && git describe)

* Submit a News entry on https://savannah.gnu.org/projects/gettext/