Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / docs / release
1 How 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
213 Copyright (C) 2003-2023 by
214 David Turner, Robert Wilhelm, and Werner Lemberg.
215
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
220 and accept it fully.
221
222
223 --- end of release ---