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