• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1-*- outline -*-
2Here are most of the steps we (maintainers) follow when making a release.
3We assume that the following environment variables are set:
4
5  GPG_KEY_ID - your gpg key ID
6  CURRENT_VERSION - the next release version
7  PREVIOUS_VERSION - the previous release version
8
9* Making a snapshot release
10
11** Update 'gnulib' git submodule:
12
13    ./gitsub.sh upgrade
14    git add gnulib
15    git commit -m 'Update to newest gnulib'
16
17** Run these commands, in this order:
18
19    # Forcing a specific version number, without having to set a git tag.
20    echo $CURRENT_VERSION > .tarball-version
21
22    ./autogen.sh
23    ./configure
24    make
25    make dist
26
27    # To prevent auto-updating '.version' file by GNUmakefile due to
28    # regenerated PO files, specify Makefile manually.
29    make -f Makefile distcheck
30
31  Then you will get a distribution tarball:
32
33    gettext-$CURRENT_VERSION-*.tar.gz
34
35  If necessary, produce variants with higher compression (takes 7 minutes):
36
37    gzip -d -c < gettext-$CURRENT_VERSION-*.tar.gz | xz -c -e > gettext-$CURRENT_VERSION-*.tar.xz
38    gzip -d -c < gettext-$CURRENT_VERSION-*.tar.gz | lzip -c -9 > gettext-$CURRENT_VERSION-*.tar.lz
39
40  Rename it e.g. gettext-ss.tar.xz
41
42** Verify that
43      gettext-runtime/po/POTFILES.in
44      gettext-tools/po/POTFILES.in
45  are complete.
46
47  Test the snapshot tarball.  If it seems good, then upload to
48  alpha.gnu.org:
49
50    gnulib/build-aux/gnupload --to alpha.gnu.org:gettext \
51                              gettext-ss.tar.xz
52
53  Notify translators and testers, by sending an email to:
54
55    coordinator@translationproject.org
56    platform-testers@gnu.org
57
58** Finally:
59
60    rm -f .tarball-version
61
62* Making an official release
63
64** Create a branch for release
65
66    git checkout -b release-$CURRENT_VERSION
67
68  or
69
70    # Forcing a specific version number, without having to set a git tag.
71    echo $CURRENT_VERSION > .tarball-version
72
73** Update files:
74
75  - gettext-runtime/doc/matrix.texi
76
77    Update with information from the Translation Project, by running
78    run.sh in gettext-runtime/doc/Admin/.  Copy resulting matrix.texi
79    into gettext-runtime/doc/.  Update the STATUS date in nls.texi.
80
81  - gettext-runtime/intl/locale.alias
82
83    Update with glibc's intl/locale.alias.
84
85  - gettext-runtime/intl/localcharset.h
86  - gettext-runtime/intl/localcharset.c
87
88    Update with libcharset inside libiconv.  Check that
89    gnulib/lib/{localcharset.h,localcharset.c} agree with it, except
90    for copyright header changes.
91
92  - gettext-runtime/po/Makefile.in.in
93
94    Update Origin version.
95
96  - gettext-runtime/m4/*.m4
97
98    Update version at the first line.
99
100  - gettext-runtime/intl/libgnuintl.in.h
101
102    Update LIBINTL_VERSION.
103
104  - libtextstyle/version.sh
105
106    Update VERSION_NUMBER and RELEASE_DATE.
107
108  - gettext-tools/libgettextpo/gettext-po.in.h
109
110    Update LIBGETTEXTPO_VERSION.
111
112  - gettext-runtime/intl/Makefile.am
113  - libtextstyle/lib/Makefile.am
114  - gettext-tools/libgettextpo/Makefile.am
115
116    Update -version-info arguments, according to libtool versioning
117    (info "(libtool) Updating version info").
118    Preferrably using the gnulib/build-aux/libtool-next-version program.
119    Or manually, using these rules:
120
121      * increment LTV_REVISION,
122      * if any interfaces (functions/variables/classes) have been removed
123        or changed [i.e. backwards compatibility has been broken],
124        increment LTV_CURRENT, set LTV_REVISION to 0, set LTV_AGE to 0.
125      * otherwise:
126        * if any interfaces (functions/variables/classes) have been added,
127          increment LTV_CURRENT, set LTV_REVISION to 0, increment LTV_AGE.
128
129  - gettext-tools/emacs/po-mode.el
130
131    Update po-mode-version-string, if there is any change.
132
133  - gettext-runtime/src/envsubst.c
134    gettext-runtime/src/gettext.c
135    gettext-runtime/src/gettext.sh.in
136    gettext-runtime/src/ngettext.c
137    gettext-tools/misc/autopoint.in
138    gettext-tools/misc/convert-archive.in
139    gettext-tools/misc/gettextize.in
140    gettext-tools/src/cldr-plurals.c
141    gettext-tools/src/hostname.c
142    gettext-tools/src/msgattrib.c
143    gettext-tools/src/msgcat.c
144    gettext-tools/src/msgcmp.c
145    gettext-tools/src/msgcomm.c
146    gettext-tools/src/msgconv.c
147    gettext-tools/src/msgen.c
148    gettext-tools/src/msgexec.c
149    gettext-tools/src/msgfilter.c
150    gettext-tools/src/msgfmt.c
151    gettext-tools/src/msggrep.c
152    gettext-tools/src/msginit.c
153    gettext-tools/src/msgmerge.c
154    gettext-tools/src/msgunfmt.c
155    gettext-tools/src/msguniq.c
156    gettext-tools/src/recode-sr-latin.c
157    gettext-tools/src/urlget.c
158    gettext-tools/src/xgettext.c
159
160    Update copyright years of the --version output of all programs.
161
162  - NEWS
163  - gettext-runtime/libasprintf/NEWS
164  - gettext-runtime/NEWS
165  - libtextstyle/NEWS
166
167    Add news entries if any.
168
169** Update autopoint related files:
170
171  - gettext-tools/configure.ac
172
173    Update ARCHIVE_VERSION.
174
175  - gettext-tools/misc/autopoint.in
176
177    Update the 'case' statement around line 371 to include the latest release.
178
179** If you got any translation updates, update translations:
180
181    rsync -Lrtvz translationproject.org::tp/latest/gettext-runtime/ \
182          gettext-runtime/po/new
183  Optionally merge:
184    cd gettext-runtime/po
185    make update-po
186    cd new
187    for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-runtime.pot; done
188    mv *.po ../
189    cd ..; rm -rf new
190
191    rsync -Lrtvz translationproject.org::tp/latest/gettext-tools/ \
192          gettext-tools/po/new
193  Optionally merge:
194    cd gettext-tools/po
195    make update-po
196    cd new
197    for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-tools.pot; done
198    mv *.po ../
199    cd ..; rm -rf new
200
201    rsync -Lrtvz translationproject.org::tp/latest/gettext-examples/ \
202          gettext-tools/examples/po/new
203  Optionally merge:
204    cd gettext-tools/examples/po
205    make update-po
206    cd new
207    for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-examples.pot; done
208    mv *.po ../
209    cd ..; rm -rf new
210
211  Adjust LINGUAS files if any of the languages has been added or
212  removed since the last release.  Commit the changes.
213
214** Create a release:
215
216    git clean -xdff
217    git checkout .
218
219    # Forcing a specific version number, without having to set a git tag.
220    echo $CURRENT_VERSION > .tarball-version
221
222    ./autogen.sh
223    ./configure --disable-shared
224    make distcheck-hook
225    make
226    make distcheck
227
228    This last "make distcheck" is supposed to fail: The tests autopoint-2,
229    autopoint-3 fail.
230
231  Make 'autopoint' work in the new release:
232
233    (cd gettext-tools/misc
234     ./add-to-archive ../../gettext-$CURRENT_VERSION.tar.gz)
235
236  Update the examples:
237
238    Update the AM_GNU_GETTEXT_VERSION argument in the gettext-tools/examples/hello-*/configure.ac
239    and gettext-tools/examples/hello-c++-kde/configure.in.in.
240
241    gettext-tools/examples/hello-c/m4/Makefile.am
242    gettext-tools/examples/hello-c/autoclean.sh
243    gettext-tools/examples/hello-c-gnome/m4/Makefile.am
244    gettext-tools/examples/hello-c-gnome/autoclean.sh
245    gettext-tools/examples/hello-c-gnome3/m4/Makefile.am
246    gettext-tools/examples/hello-c-gnome3/autoclean.sh
247    gettext-tools/examples/hello-c++/m4/Makefile.am
248    gettext-tools/examples/hello-c++/autoclean.sh
249    gettext-tools/examples/hello-c++-kde/m4/Makefile.am
250    gettext-tools/examples/hello-c++-kde/autoclean.sh
251    gettext-tools/examples/hello-c++-gnome/m4/Makefile.am
252    gettext-tools/examples/hello-c++-gnome/autoclean.sh
253    gettext-tools/examples/hello-objc/m4/Makefile.am
254    gettext-tools/examples/hello-objc/autoclean.sh
255    gettext-tools/examples/hello-objc-gnome/m4/Makefile.am
256    gettext-tools/examples/hello-objc-gnome/autoclean.sh
257
258    Update list of .m4 files (brought in by autopoint).
259
260    Install the gettext package, so as to overwrite or override the locally
261    installed 'autopoint' with the newest version:
262      $ type autopoint
263      autopoint is SOME_PREFIX/bin/autopoint
264      $ make -k distclean
265      $ ./configure --prefix=SOME_PREFIX && make && make install
266
267    Then check the build infrastructure of the examples by running
268      $ cd gettext-tools/examples
269      $ ./check-examples
270
271  Finally really make the release tarball:
272
273    # To prevent auto-updating '.version' file by GNUmakefile due to
274    # regenerated PO files, specify Makefile manually.
275    make -f Makefile distcheck
276
277  If necessary, produce variants with higher compression (takes 7 minutes):
278
279    gzip -d -c < gettext-$CURRENT_VERSION.tar.gz | xz -c -e > gettext-$CURRENT_VERSION.tar.xz
280    gzip -d -c < gettext-$CURRENT_VERSION.tar.gz | lzip -c -9 > gettext-$CURRENT_VERSION.tar.lz
281
282  Add a git tag (an annotated tag, not a lightweight tag):
283
284    git commit --allow-empty -m "Release $CURRENT_VERSION"
285    git tag -a -m "Release $CURRENT_VERSION" v$CURRENT_VERSION
286
287** Upload tarballs:
288
289    gnulib/build-aux/gnupload --to ftp.gnu.org:gettext \
290                              gettext-$CURRENT_VERSION.tar.{gz,xz,lz}
291
292** Upload autopoint archive to alpha.gnu.org:
293
294  This is needed to compile git master after the release (as
295  autogen.sh fetches the archive).
296
297    xz -c -e < gettext-tools/misc/archive.dir.tar > archive.dir-$CURRENT_VERSION.tar.xz
298    gnulib/build-aux/gnupload \
299      --to alpha.gnu.org:gettext \
300      --symlink-regex archive.dir-$CURRENT_VERSION.tar.xz
301
302** Finally:
303
304    rm -f .tarball-version
305
306** Merge release-$CURRENT_VERSION branch to master and push the changes to the
307   remote repository:
308
309    git checkout master
310    git merge release-$CURRENT_VERSION
311    git push origin master
312    git push origin release-$CURRENT_VERSION
313
314** Update the homepage on www.gnu.org:
315
316  - Bump the version number in gettext.html.
317  - Update FAQ.html from gettext-tools/doc/FAQ.html.
318
319** Regenerate the documentation for www.gnu.org:
320
321    cp gnulib/build-aux/gendocs.sh gettext-tools/doc
322    cp gnulib/doc/gendocs_template gettext-tools/doc
323    cp -p gettext-runtime/doc/*.texi gettext-tools/doc
324    cp build-aux/texinfo.tex gettext-tools/doc
325    (cd gettext-tools/doc
326     LC_ALL=C ./gendocs.sh --email bug-gnu-gettext gettext "GNU gettext")
327
328    cp gnulib/build-aux/gendocs.sh gettext-runtime/libasprintf
329    cp gnulib/doc/gendocs_template gettext-runtime/libasprintf
330    cp build-aux/texinfo.tex gettext-runtime/libasprintf
331    (cd gettext-runtime/libasprintf
332     LC_ALL=C ./gendocs.sh --email bug-gnu-gettext autosprintf "GNU autosprintf")
333
334    cp gnulib/build-aux/gendocs.sh libtextstyle/doc
335    cp gnulib/doc/gendocs_template libtextstyle/doc
336    cp build-aux/texinfo.tex libtextstyle/doc
337    (cd libtextstyle/doc
338     LC_ALL=C ./gendocs.sh --email bug-gnu-gettext libtextstyle "GNU libtextstyle")
339
340  FIXME: Add a script to automate this process.
341
342  Copy the resulting manual/ directories.  Commit the resulting
343  manual/ directories in CVS, and for every removed HTML file (that
344  corresponds to a deleted node) add a line to the .symlinks file in
345  the same directory.
346
347** Announce on info-gnu
348
349  The announcement template can be generated with:
350
351    gnulib/build-aux/announce-gen \
352      --release-type stable \
353      --package-name gettext \
354      --previous-version $PREVIOUS_VERSION \
355      --current-version $CURRENT_VERSION \
356      --gpg-key-id $GPG_KEY_ID \
357      --url-directory https://ftp.gnu.org/gnu/gettext \
358      --bootstrap-tools=autoconf,automake,libtool,bison,gnulib \
359      --gnulib-version=$(cd gnulib && git describe)
360
361* Submit a News entry on https://savannah.gnu.org/projects/gettext/
362