mirror of
https://https.git.savannah.gnu.org/git/gettext.git
synced 2026-01-26 15:39:11 +00:00
354 lines
11 KiB
Plaintext
354 lines
11 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 newest gnulib'
|
|
|
|
** Run these commands, in this order:
|
|
|
|
# Forcing a specific version number, without having to set a git tag.
|
|
echo $CURRENT_VERSION > .tarball-version
|
|
|
|
./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.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
|
|
|
|
** 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/intl/locale.alias
|
|
|
|
Update with glibc's intl/locale.alias.
|
|
|
|
- gettext-runtime/intl/localcharset.h
|
|
- gettext-runtime/intl/localcharset.c
|
|
|
|
Update with libcharset inside libiconv. Check that
|
|
gnulib/lib/{localcharset.h,localcharset.c} 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.
|
|
|
|
- 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.
|
|
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-tools/misc/autopoint.in
|
|
gettext-tools/misc/convert-archive.in
|
|
gettext-tools/misc/gettextize.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/msgunfmt.c
|
|
gettext-tools/src/msguniq.c
|
|
gettext-tools/src/recode-sr-latin.c
|
|
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/misc/autopoint.in
|
|
|
|
Update the 'case' statement around line 371 to include the latest release.
|
|
|
|
** If you got any translation updates, update translations:
|
|
|
|
rsync -Lrtvz translationproject.org::tp/latest/gettext-runtime/ \
|
|
gettext-runtime/po/new
|
|
Optionally merge:
|
|
cd gettext-runtime/po
|
|
make update-po
|
|
cd new
|
|
for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-runtime.pot; done
|
|
mv *.po ../
|
|
cd ..; rm -rf new
|
|
|
|
rsync -Lrtvz translationproject.org::tp/latest/gettext-tools/ \
|
|
gettext-tools/po/new
|
|
Optionally merge:
|
|
cd gettext-tools/po
|
|
make update-po
|
|
cd new
|
|
for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-tools.pot; done
|
|
mv *.po ../
|
|
cd ..; rm -rf new
|
|
|
|
rsync -Lrtvz translationproject.org::tp/latest/gettext-examples/ \
|
|
gettext-tools/examples/po/new
|
|
Optionally merge:
|
|
cd gettext-tools/examples/po
|
|
make update-po
|
|
cd new
|
|
for f in *.po; do msgmerge --update --lang=${f%.po} --previous $f ../gettext-examples.pot; done
|
|
mv *.po ../
|
|
cd ..; rm -rf new
|
|
|
|
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 .
|
|
|
|
# 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
|
|
|
|
Make 'autopoint' work in the new release:
|
|
|
|
(cd gettext-tools/misc
|
|
./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++-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
|
|
|
|
Finally really make the release tarball:
|
|
|
|
# To prevent auto-updating '.version' file by GNUmakefile due to
|
|
# regenerated PO files, specify Makefile manually.
|
|
make -f Makefile 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}
|
|
|
|
** Upload autopoint archive to alpha.gnu.org:
|
|
|
|
This is needed to compile git master after the release (as
|
|
autogen.sh fetches the archive).
|
|
|
|
xz -c -e < gettext-tools/misc/archive.dir.tar > archive.dir-$CURRENT_VERSION.tar.xz
|
|
gnulib/build-aux/gnupload \
|
|
--to alpha.gnu.org:gettext \
|
|
--symlink-regex archive.dir-$CURRENT_VERSION.tar.xz
|
|
|
|
** 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-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")
|
|
|
|
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-gnu-gettext libtextstyle "GNU libtextstyle")
|
|
|
|
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 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/
|