gettext/Admin/release-steps
Bruno Haible e549b33dfa New program 'msgpre'.
* gettext-tools/src/msgpre.c: New file, based on gettext-tools/src/msgfilter.c.
* gettext-tools/src/FILES: Describe msgpre.c.
* gettext-tools/src/Makefile.am (bin_PROGRAMS): Add msgpre.
(msgpre_SOURCES, msgpre_LDADD, msgpre_DEPENDENCIES, msgpre_CPPFLAGS,
msgpre_LDFLAGS): New variables.
* gettext-tools/po/POTFILES.in: Add msgpre.c.
* gettext-tools/man/msgpre.x: New file.
* gettext-tools/man/Makefile.am (man_aux): Add msgpre.x.
(man_MAN1SRC): Add msgpre.1.
(man_HTML): Add msgpre.1.html.
(msgpre.1, msgpre.1.html): Add dependencies.
* gettext-tools/doc/gettext.texi (msgpre Invocation): New section.
* gettext-tools/doc/msgpre.texi: New file.
* gettext-tools/doc/Makefile.am (gettext_TEXINFOS): Add it.
* gettext-tools/Makefile.am (programs-for-distdir): Create msgpre.
(distdir1, gen-man1): Update for the msgpre.1 manual page.
* NEWS: Mention the new program.
2025-12-29 19:51:19 +01:00

331 lines
10 KiB
Plaintext

-*- 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:
./gitsub.sh upgrade
git add gnulib
git commit -m 'Update to the newest gnulib.' gnulib
** Run these commands, in this order:
# Forcing a specific version number, without having to set a git tag.
echo $CURRENT_VERSION > .tarball-version
./autopull.sh
./autogen.sh
./configure --disable-shared
make
make distcheck
Then you will get a distribution tarball:
gettext-$CURRENT_VERSION-*.tar.gz
If necessary, produce variants with higher compression (takes 7 minutes):
gzip -d -c < gettext-$CURRENT_VERSION-*.tar.gz | xz -c -e > gettext-$CURRENT_VERSION-*.tar.xz
gzip -d -c < gettext-$CURRENT_VERSION-*.tar.gz | lzip -c -9 > gettext-$CURRENT_VERSION-*.tar.lz
Rename it e.g. gettext-ss.tar.xz
** Verify that
gettext-runtime/po/POTFILES.in
gettext-tools/po/POTFILES.in
are complete.
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
** Finally:
rm -f .tarball-version
* Making an official release
** Create a branch for release
git checkout -b release-$CURRENT_VERSION
or
# Forcing a specific version number, without having to set a git tag.
echo $CURRENT_VERSION > .tarball-version
** Update files:
- 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/. Update the STATUS date in nls.texi.
- 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.
- libtextstyle/version.sh
Update VERSION_NUMBER and RELEASE_DATE.
- gettext-tools/libgettextpo/gettext-po.in.h
Update LIBGETTEXTPO_VERSION.
- gettext-runtime/intl/Makefile.am
- libtextstyle/lib/Makefile.am
- gettext-tools/libgettextpo/Makefile.am
Update -version-info arguments, according to libtool versioning
(info "(libtool) Updating version info").
Preferrably using the gnulib/build-aux/libtool-next-version program,
on a non-glibc platform (e.g. FreeBSD).
Or manually, using these rules:
* increment LTV_REVISION,
* if any interfaces (functions/variables/classes) have been removed
or changed [i.e. backwards compatibility has been broken],
increment LTV_CURRENT, set LTV_REVISION to 0, set LTV_AGE to 0.
* otherwise:
* if any interfaces (functions/variables/classes) have been added,
increment LTV_CURRENT, set LTV_REVISION to 0, increment LTV_AGE.
- gettext-tools/emacs/po-mode.el
Update po-mode-version-string, if there is any change.
- gettext-runtime/src/envsubst.c
gettext-runtime/src/gettext.c
gettext-runtime/src/gettext.sh.in
gettext-runtime/src/ngettext.c
gettext-runtime/src/printf_gettext.c
gettext-runtime/src/printf_ngettext.c
gettext-tools/wizard/gettextize.in
gettext-tools/autotools/autopoint.in
gettext-tools/autotools/convert-archive.in
gettext-tools/src/cldr-plurals.c
gettext-tools/src/hostname.c
gettext-tools/src/msgattrib.c
gettext-tools/src/msgcat.c
gettext-tools/src/msgcmp.c
gettext-tools/src/msgcomm.c
gettext-tools/src/msgconv.c
gettext-tools/src/msgen.c
gettext-tools/src/msgexec.c
gettext-tools/src/msgfilter.c
gettext-tools/src/msgfmt.c
gettext-tools/src/msggrep.c
gettext-tools/src/msginit.c
gettext-tools/src/msgmerge.c
gettext-tools/src/msgpre.c
gettext-tools/src/msgunfmt.c
gettext-tools/src/msguniq.c
gettext-tools/src/recode-sr-latin.c
gettext-tools/src/spit.c
gettext-tools/src/spit.py.in
gettext-tools/src/urlget.c
gettext-tools/src/xgettext.c
Update copyright years of the --version output of all programs.
- NEWS
- gettext-runtime/libasprintf/NEWS
- gettext-runtime/NEWS
- libtextstyle/NEWS
Add news entries if any.
** Update autopoint related files:
- gettext-tools/configure.ac
Update ARCHIVE_VERSION.
- gettext-tools/autotools/autopoint.in
Update the 'case' statement around line 395 to include the latest release.
** If you got any translation updates, update translations:
(cd gettext-runtime/po && ./fetch-po)
(cd gettext-tools/po && ./fetch-po)
(cd gettext-tools/examples/po && ./fetch-po)
Commit the changes.
** Create a release:
git clean -xdff
git checkout .
# Forcing a specific version number, without having to set a git tag.
echo $CURRENT_VERSION > .tarball-version
./autogen.sh
./configure --disable-shared
make distcheck-hook
make
make distcheck
This last "make distcheck" is supposed to fail: The tests autopoint-2,
autopoint-3 fail.
Make 'autopoint' work in the new release:
(cd gettext-tools/autotools
./add-to-archive ../../gettext-$CURRENT_VERSION.tar.gz)
Update the examples:
Update the AM_GNU_GETTEXT_VERSION argument in the gettext-tools/examples/hello-*/configure.ac
and gettext-tools/examples/hello-c++-kde/configure.in.in.
gettext-tools/examples/hello-c/m4/Makefile.am
gettext-tools/examples/hello-c/autoclean.sh
gettext-tools/examples/hello-c-gnome/m4/Makefile.am
gettext-tools/examples/hello-c-gnome/autoclean.sh
gettext-tools/examples/hello-c-gnome3/m4/Makefile.am
gettext-tools/examples/hello-c-gnome3/autoclean.sh
gettext-tools/examples/hello-c++/m4/Makefile.am
gettext-tools/examples/hello-c++/autoclean.sh
gettext-tools/examples/hello-c++20/m4/Makefile.am
gettext-tools/examples/hello-c++20/autoclean.sh
gettext-tools/examples/hello-c++-kde/m4/Makefile.am
gettext-tools/examples/hello-c++-kde/autoclean.sh
gettext-tools/examples/hello-c++-gnome/m4/Makefile.am
gettext-tools/examples/hello-c++-gnome/autoclean.sh
gettext-tools/examples/hello-objc/m4/Makefile.am
gettext-tools/examples/hello-objc/autoclean.sh
gettext-tools/examples/hello-objc-gnome/m4/Makefile.am
gettext-tools/examples/hello-objc-gnome/autoclean.sh
Update list of .m4 files (brought in by autopoint).
Install the gettext package, so as to overwrite or override the locally
installed 'autopoint' with the newest version:
$ type autopoint
autopoint is SOME_PREFIX/bin/autopoint
$ make -k distclean
$ ./configure --prefix=SOME_PREFIX && make && make install
Then check the build infrastructure of the examples by running
$ cd gettext-tools/examples
$ ./check-examples
(This currently does not work with GCC 15 for the hello-go* examples,
due to <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119098>.)
Finally really make the release tarball:
make distcheck
If necessary, produce variants with higher compression (takes 7 minutes):
gzip -d -c < gettext-$CURRENT_VERSION.tar.gz | xz -c -e > gettext-$CURRENT_VERSION.tar.xz
gzip -d -c < gettext-$CURRENT_VERSION.tar.gz | lzip -c -9 > gettext-$CURRENT_VERSION.tar.lz
Add a git tag (an annotated tag, not a lightweight tag):
git commit --allow-empty -m "Release $CURRENT_VERSION"
git tag -a -m "Release $CURRENT_VERSION" v$CURRENT_VERSION
** Upload tarballs:
gnulib/build-aux/gnupload --to ftp.gnu.org:gettext \
gettext-$CURRENT_VERSION.tar.{gz,xz,lz}
** Finally:
rm -f .tarball-version
** 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
** 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-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-gettext autosprintf "GNU autosprintf")
cp gnulib/build-aux/gendocs.sh libtextstyle/doc
cp gnulib/doc/gendocs_template libtextstyle/doc
cp build-aux/texinfo.tex libtextstyle/doc
(cd libtextstyle/doc
LC_ALL=C ./gendocs.sh --email bug-gettext libtextstyle "GNU libtextstyle")
Copy the resulting manual/ directories:
(cd gettext-tools/doc/manual && tar cf - .) | (cd ../www.gnu.org/gettext/manual && tar xf -)
(cd gettext-runtime/libasprintf/manual && tar cf - .) | (cd ../www.gnu.org/gettext/libasprintf/manual && tar xf -)
(cd libtextstyle/doc/manual && tar cf - .) | (cd ../www.gnu.org/gettext/libtextstyle/manual && tar xf -)
FIXME: Add a script to automate this process.
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 https://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/
* In the bug tracker on https://savannah.gnu.org/projects/gettext/, search
using the Advanced query form for the bugs with
Open/Closed = Closed
Status = Fixed
and move them to Status = Fix Released, adding a comment
The fix is contained in gettext $CURRENT_VERSION.