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