How to prepare a new release
----------------------------

. include/freetype/freetype.h:  Update FREETYPE_MAJOR, FREETYPE_MINOR,
  and FREETYPE_PATCH.

. Update version numbers in all files where necessary (for example, do
  a grep for both `2.3.0' and `230' for release 2.3.0).

. Jamfile (RefDoc): Update the `--title' option.

. docs/CHANGES: Document differences to last release.

. README: Update.

. docs/VERSION.DLL: Document changed `version_info'.

. ChangeLog: Announce  new release  (both in  freetype2  and  ft2demos
  modules).

. Tag the CVS (freetype2, ft2demos).

  TODO: Tag the home page CVS on savannah.nongnu.org.

. Say `make  dist'  in both  the  freetype2 and  ft2demos  modules  to
  generate the .tar.gz, .tar.bz2, and .zip files.

. Create     the     doc    bundles    (freetype-doc-<version>.tar.gz,
  freetype-doc-<version>.tar.bz2,    ftdoc<version>.zip).    This   is
  everything below

    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/

  except the `reference' subdirectory.   Do *not* use option `-l' from
  zip!

. Run the following script  (updating `VERSION' and `version' with the
  actual version strings)  to upload the bundles to  both Savannah and
  SourceForge.  `gnupload' is a script taken from the automake bundle.

    VERSION=2.3.0
    version=230

    gnupload --to savannah.nongnu.org:freetype \
             freetype-$VERSION.tar.gz \
             freetype-$VERSION.tar.bz2 \
             ft$version.zip \
             ft2demos-$VERSION.tar.gz \
             ft2demos-$VERSION.tar.bz2 \
             ftdmo$version.zip \
             freetype-doc-$VERSION.tar.gz \
             freetype-doc-$VERSION.tar.bz2 \
             ftdoc$version.zip

    for f in freetype-$VERSION.tar.gz \
             freetype-$VERSION.tar.gz.sig \
             freetype-$VERSION.tar.bz2 \
             freetype-$VERSION.tar.bz2.sig \
             ft$version.zip \
             ft$version.zip.sig \
             ft2demos-$VERSION.tar.gz \
             ft2demos-$VERSION.tar.gz.sig \
             ft2demos-$VERSION.tar.bz2 \
             ft2demos-$VERSION.tar.bz2.sig \
             ftdmo$version.zip \
             ftdmo$version.zip.sig \
             freetype-doc-$VERSION.tar.gz \
             freetype-doc-$VERSION.tar.gz.sig \
             freetype-doc-$VERSION.tar.bz2 \
             freetype-doc-$VERSION.tar.bz2.sig \
             ftdoc$version.zip \
             ftdoc$version.zip.sig ; do
      ncftpput upload.sf.net /incoming $f
    done

. While files on savannah.gnu.org are automatically moved to the right
  directory, it must be done manually on SourceForge.  Do that now.

. Update the FreeType release notes on SourceForge.

. Copy the reference files (generated by `make dist') to

    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/reference

  and

    shell.sf.net:/home/groups/f/fr/freetype/htdocs/freetype2/docs/reference

  TODO: Create  FreeType  home  page  CVS  on savannah.nongnu.org  and
        update it accordingly.

        Write script to automatically do this.

        Mirror FreeType's savannah home page everywhere.

. Update

    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/index2.html

  and copy it to

    shell.sf.net:/home/groups/f/fr/freetype/htdocs/index2.html

. Announce new release on freetype-announce@nongnu.org and to relevant
  newsgroups.

----------------------------------------------------------------------

Copyright 2003, 2005, 2006, 2007 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This  file is  part of  the FreeType  project, and  may only  be used,
modified,  and distributed  under the  terms of  the  FreeType project
license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
this file you  indicate that you have read  the license and understand
and accept it fully.


--- end of release ---
