• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 . 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 
193 Copyright (C) 2003-2022 by
194 David Turner, Robert Wilhelm, and Werner Lemberg.
195 
196 This  file is  part of  the FreeType  project, and  may only  be used,
197 modified,  and distributed  under the  terms of  the  FreeType project
198 license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
199 this file you  indicate that you have read  the license and understand
200 and accept it fully.
201 
202 
203 --- end of release ---
204