1How 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@dl.sv.nongnu.org:/releases/freetype/ 148 149 rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \ 150 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/ 151 rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \ 152 $SOURCEFORGE_USER,freetype@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@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@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@freedesktop.org) that rsyncs with 184 185 freedesktop.org://srv/freetype.freedesktop.org/www 186 187. Announce new release on freetype-announce@nongnu.org and to relevant 188 newsgroups. 189 190---------------------------------------------------------------------- 191 192Copyright 2003-2018 by 193David Turner, Robert Wilhelm, and Werner Lemberg. 194 195This file is part of the FreeType project, and may only be used, 196modified, and distributed under the terms of the FreeType project 197license, LICENSE.TXT. By continuing to use, modify, or distribute 198this file you indicate that you have read the license and understand 199and accept it fully. 200 201 202--- end of release --- 203