• 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. 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