1 How to prepare a new release
2 ----------------------------
4 . include/freetype/freetype.h: Update `FREETYPE_MAJOR`,
5 `FREETYPE_MINOR`, and `FREETYPE_PATCH`.
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).
10 . builds/unix/configure.raw: Update `version_info`.
12 . docs/CHANGES: Document differences to last release.
16 . docs/VERSIONS.TXT: Document changed `version_info`.
18 . Update the 'dlg' submodule with
20 git submodule foreach git pull origin master
22 . Copy the submodule code with
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=""
34 make distclean && ./configure CC=g++ && make ANSIFLAGS=""
36 to test compilation with both gcc and g++ (you might also add the `-j`
37 flag to `make` for parallel compilation).
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
44 . Test C++ compilation for 'freetype-demos' too; this needs a compiled
45 FreeType library as described in the `README` file.
47 make distclean && make
48 make distclean && make CC=g++ ANSIFLAGS=""
50 . Run `src/tools/chktrcmp.py` and check that there are no undefined
53 . Update meson subproject files (for both the 'freetype' and
54 'freetype-demos' git repositories) with
56 meson subprojects update
58 . Test meson compilation (for both the 'freetype' and 'freetype-demos'
59 git repositories) with
61 meson setup builddir && meson compile -C builddir
65 . After pushing the new release, tag the git repositories ('freetype',
66 'freetype-demos') with
68 git tag VER-<version> -m "" -u <committer>
70 and push the tags with
78 that the git directory is really clean (and remove extraneous files
81 . Say `make dist` in both the 'freetype' and 'freetype-demos'
82 repositories to generate the `.tar.gz`, `.tar.xz`, and `.zip` files.
84 . Create the doc bundles (`freetype-doc-<version>.tar.gz`,
85 `freetype-doc-<version>.tar.xz`, `ftdoc<version>.zip`). This is
88 <freetype-web git repository>/freetype2/docs
90 except the `reference` subdirectory. Do *not* use option `-l` from
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).
102 SOURCEFORGE_USER=wlemb
103 GPG_KEY_ID=BE6C3AAC63AD8E3F
105 #####################################################################
107 GPG="/usr/bin/gpg --batch --no-tty --local-user $GPG_KEY_ID"
109 version=`echo $VERSION | sed "s/\\.//g"`
111 FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
112 freetype-$VERSION.tar.xz \
114 FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
115 ft2demos-$VERSION.tar.xz \
117 FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
118 freetype-doc-$VERSION.tar.xz \
121 PACKAGE_LIST="$FREETYPE_PACKAGES \
128 PATH=/empty echo -n "Enter GPG passphrase: "
134 for f in $PACKAGE_LIST; do
135 if test ! -f $f; then
136 echo "$0: Cannot find \`$f'" 1>&2
143 for f in $PACKAGE_LIST; do
146 echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
150 for i in $FREETYPE_PACKAGES; do
151 FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
155 for i in $FT2DEMOS_PACKAGES; do
156 FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
160 for i in $FTDOC_PACKAGES; do
161 FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
164 SIGNATURE_LIST="$FREETYPE_SIGNATURES \
165 $FT2DEMOS_SIGNATURES \
168 scp $PACKAGE_LIST $SIGNATURE_LIST \
169 $SAVANNAH_USER@dl.sv.nongnu.org:/releases/freetype/
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/
180 . Prepare a `README` file for SourceForge and upload it with the
181 following script (with updated `$VERSION` and `$SOURCEFORGE_USER`
187 SOURCEFORGE_USER=wlemb
189 #####################################################################
191 rsync -avP -e ssh README \
192 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
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.
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.
204 . Announce new release on 'freetype-announce@nongnu.org' and to
205 relevant newsgroups. The text should include
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.
211 ----------------------------------------------------------------------
213 Copyright (C) 2003-2023 by
214 David Turner, Robert Wilhelm, and Werner Lemberg.
216 This file is part of the FreeType project, and may only be used,
217 modified, and distributed under the terms of the FreeType project
218 license, LICENSE.TXT. By continuing to use, modify, or distribute
219 this file you indicate that you have read the license and understand
223 --- end of release ---