Home | History | Annotate | Download | only in docs
      1 How to prepare a new release
      2 ----------------------------
      3 
      4 . include/freetype/freetype.h:  Update FREETYPE_MAJOR, FREETYPE_MINOR,
      5   and FREETYPE_PATCH.
      6 
      7 . Update version numbers in all files where necessary (for example, do
      8   a grep for both `2.3.1' and `231' for release 2.3.1).
      9 
     10 . builds/unix/configure.raw: Update `version_info'.
     11 
     12 . docs/CHANGES: Document differences to last release.
     13 
     14 . README: Update.
     15 
     16 . docs/VERSIONS.TXT: Document changed `version_info'.
     17 
     18 . ChangeLog:   Announce  new  release   (both  in  the  freetype2  and
     19   freetype2-demos modules).
     20 
     21 . Clone the git archive to another directory with
     22 
     23     git clone -l -s . ../freetype2.test
     24 
     25   or something like this and run
     26 
     27     make distclean; make devel; make
     28     make distclean; make devel; make multi
     29     make distclean; make devel CC=g++; make CC=g++
     30     make distclean; make devel CC=g++; make multi CC=g++
     31 
     32     sh autogen.sh
     33     make distclean; ./configure; make
     34     make distclean; ./configure CC=g++; make
     35 
     36   in the cloned repository to test compilation with both gcc and g++.
     37 
     38 . Test C++ compilation  for freetype2-demos too  (using `git clone' as
     39   above).
     40 
     41 . Run  src/tools/chktrcmp.py  and check  that there  are no  undefined
     42   trace_XXXX macros.
     43 
     44 . After pushing the new release,  tag the git repositories (freetype2,
     45   freetype2-demos) with
     46 
     47     git tag VER-<version> -m "" -u <committer>
     48 
     49   and push the tags with
     50 
     51     git push --tags
     52 
     53 . Check with
     54 
     55     git clean -ndx
     56 
     57   that the git directory is really clean  (and remove extraneous files
     58   if necessary).
     59 
     60 . Say `make  dist' in both the  freetype2 and freetype2-demos  modules
     61   to generate the .tar.gz, .tar.bz2, and .zip files.
     62 
     63 . Create     the     doc    bundles    (freetype-doc-<version>.tar.gz,
     64   freetype-doc-<version>.tar.bz2,    ftdoc<version>.zip).    This   is
     65   everything in
     66 
     67     <freetype-web git repository>/freetype2/docs
     68 
     69   except the `reference' subdirectory.   Do *not* use option `-l' from
     70   zip!
     71 
     72 . Run the following script (with updated `$VERSION', `$SAVANNAH_USER',
     73   and $SOURCEFORGE_USER  variables) to sign and upload the  bundles to
     74   both Savannah and SourceForge.  The signing code has been taken from
     75   the `gnupload' script (part of the automake bundle).
     76 
     77     #!/bin/sh
     78 
     79     VERSION=2.5.1
     80     SAVANNAH_USER=wl
     81     SOURCEFORGE_USER=wlemb
     82 
     83     #####################################################################
     84 
     85     GPG='/usr/bin/gpg --batch --no-tty'
     86 
     87     version=`echo $VERSION | sed "s/\\.//g"`
     88 
     89     FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
     90                        freetype-$VERSION.tar.bz2 \
     91                        ft$version.zip"
     92     FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
     93                        ft2demos-$VERSION.tar.bz2 \
     94                        ftdmo$version.zip"
     95     FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
     96                     freetype-doc-$VERSION.tar.bz2 \
     97                     ftdoc$version.zip"
     98 
     99     PACKAGE_LIST="$FREETYPE_PACKAGES \
    100                   $FT2DEMOS_PACKAGES \
    101                   $FTDOC_PACKAGES"
    102 
    103     set -e
    104     unset passphrase
    105 
    106     PATH=/empty echo -n "Enter GPG passphrase: "
    107     stty -echo
    108     read -r passphrase
    109     stty echo
    110     echo
    111 
    112     for f in $PACKAGE_LIST; do
    113       if test ! -f $f; then
    114         echo "$0: Cannot find \`$f'" 1>&2
    115         exit 1
    116       else
    117         :
    118       fi
    119     done
    120 
    121     for f in $PACKAGE_LIST; do
    122       echo "Signing $f..."
    123       rm -f $f.sig
    124       echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
    125     done
    126 
    127     FREETYPE_SIGNATURES=
    128     for i in $FREETYPE_PACKAGES; do
    129       FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
    130     done
    131 
    132     FT2DEMOS_SIGNATURES=
    133     for i in $FT2DEMOS_PACKAGES; do
    134       FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
    135     done
    136 
    137     FTDOC_SIGNATURES=
    138     for i in $FTDOC_PACKAGES; do
    139       FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
    140     done
    141 
    142     SIGNATURE_LIST="$FREETYPE_SIGNATURES \
    143                     $FT2DEMOS_SIGNATURES \
    144                     $FTDOC_SIGNATURES"
    145 
    146     scp $PACKAGE_LIST $SIGNATURE_LIST \
    147       $SAVANNAH_USER (a] dl.sv.nongnu.org:/releases/freetype/
    148 
    149     rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
    150       $SOURCEFORGE_USER,freetype (a] frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
    151     rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
    152       $SOURCEFORGE_USER,freetype (a] frs.sf.net:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
    153     rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
    154       $SOURCEFORGE_USER,freetype (a] frs.sf.net:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
    155 
    156     # EOF
    157 
    158 . Prepare a  README for SourceForge  and upload it  with the following
    159   script (with updated `$VERSION' and $SOURCEFORGE_USER variables).
    160 
    161     #!/bin/sh
    162 
    163     VERSION=2.5.1
    164     SOURCEFORGE_USER=wlemb
    165 
    166     #####################################################################
    167 
    168     rsync -avP -e ssh README \
    169       $SOURCEFORGE_USER,freetype (a] frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
    170 
    171     # EOF
    172 
    173 . On   SourceForge,   tag   the    just   uploaded   `ftXXX.zip'   and
    174   `freetype-XXX.tar.bz2'  files as the  default files to  download for
    175   `Windows' and `Others', respectively.
    176 
    177 . Copy the reference files (generated by `make dist') to
    178 
    179     <freetype-web git repository>/freetype2/docs/reference
    180 
    181 . Update the `freetype-web' repository.  `git push' then automatically
    182   triggers an update  of the public web pages  within ten minutes, due
    183   to a cron script (on wl (a] freedesktop.org) that rsyncs with
    184 
    185     freedesktop.org://srv/freetype.freedesktop.org/www
    186 
    187 . Announce new release on freetype-announce (a] nongnu.org and to relevant
    188   newsgroups.
    189 
    190 ----------------------------------------------------------------------
    191 
    192 Copyright 2003-2018 by
    193 David Turner, Robert Wilhelm, and Werner Lemberg.
    194 
    195 This  file is  part of  the FreeType  project, and  may only  be used,
    196 modified,  and distributed  under the  terms of  the  FreeType project
    197 license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    198 this file you  indicate that you have read  the license and understand
    199 and accept it fully.
    200 
    201 
    202 --- end of release ---
    203