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