blob: 4c692e9eb2327079b5b7ca2329ac1d7ff02a0eaa [file] [log] [blame]
Werner Lembergf9d864a2003-07-25 05:57:21 +00001How to prepare a new release
2----------------------------
3
Werner Lemberg392cf222015-06-25 13:04:57 +02004. include/freetype/freetype.h: Update FREETYPE_MAJOR, FREETYPE_MINOR,
Werner Lembergf99d8462006-02-26 17:50:59 +00005 and FREETYPE_PATCH.
Werner Lembergf9d864a2003-07-25 05:57:21 +00006
Werner Lemberg87a5a432007-01-17 12:44:39 +00007. Update version numbers in all files where necessary (for example, do
Werner Lemberg53935932007-01-31 08:53:02 +00008 a grep for both `2.3.1' and `231' for release 2.3.1).
Werner Lembergf99d8462006-02-26 17:50:59 +00009
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000010. builds/unix/configure.raw: Update `version_info'.
Werner Lembergf9d864a2003-07-25 05:57:21 +000011
12. docs/CHANGES: Document differences to last release.
13
14. README: Update.
15
Werner Lemberge42dbce2003-11-09 08:37:14 +000016. docs/VERSION.DLL: Document changed `version_info'.
Werner Lembergf9d864a2003-07-25 05:57:21 +000017
Werner Lembergdeee58f2009-07-15 07:58:00 +020018. ChangeLog: Announce new release (both in the freetype2 and
19 freetype2-demos modules).
Werner Lemberge42dbce2003-11-09 08:37:14 +000020
Werner Lembergdeee58f2009-07-15 07:58:00 +020021. Clone the git archive to another directory with
22
23 git clone -l -s . ../freetype2.test
24
25 or something like this and run
Werner Lemberg1e1b6df2007-07-07 07:30:40 +000026
27 make distclean; make devel; make
28 make distclean; make devel; make multi
29 make distclean; make devel CC=g++; make CC=g++
30 make distclean; make devel CC=g++; make multi CC=g++
31
32 sh autogen.sh
33 make distclean; ./configure; make
34 make distclean; ./configure CC=g++; make
35
Werner Lembergdeee58f2009-07-15 07:58:00 +020036 in the cloned repository to test compilation with both gcc and g++.
Werner Lemberg1e1b6df2007-07-07 07:30:40 +000037
Werner Lembergdeee58f2009-07-15 07:58:00 +020038. Test C++ compilation for freetype2-demos too (using `git clone' as
39 above).
Werner Lemberg1e1b6df2007-07-07 07:30:40 +000040
Werner Lembergdeee58f2009-07-15 07:58:00 +020041. Run src/tools/chktrcmp.py and check that there are no undefined
42 trace_XXXX macros.
suzuki toshiya313d4f42009-07-13 00:01:57 +090043
Werner Lemberg50184772014-12-07 08:17:12 +010044. After pushing the new release, tag the git repositories (freetype2,
45 freetype2-demos) with
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +020046
47 git tag VER-<version> -m "" -u <committer>
48
49 and push the tags with
50
51 git push --tags
Werner Lemberge42dbce2003-11-09 08:37:14 +000052
Werner Lembergc6a66b42012-12-20 08:31:56 +010053. Check with
54
55 git clean -ndx
56
57 that the git directory is really clean (and remove extraneous files
58 if necessary).
59
Werner Lembergdeee58f2009-07-15 07:58:00 +020060. Say `make dist' in both the freetype2 and freetype2-demos modules
61 to generate the .tar.gz, .tar.bz2, and .zip files.
Werner Lemberg87a5a432007-01-17 12:44:39 +000062
63. Create the doc bundles (freetype-doc-<version>.tar.gz,
64 freetype-doc-<version>.tar.bz2, ftdoc<version>.zip). This is
Werner Lemberg3aee4292013-11-25 00:28:11 +010065 everything in
Werner Lemberg87a5a432007-01-17 12:44:39 +000066
Werner Lemberg3aee4292013-11-25 00:28:11 +010067 <freetype-web git repository>/freetype2/docs
Werner Lemberg87a5a432007-01-17 12:44:39 +000068
69 except the `reference' subdirectory. Do *not* use option `-l' from
70 zip!
71
Werner Lembergbe54a682008-06-29 07:43:41 +000072. Run the following script (with updated `$VERSION', `$SAVANNAH_USER',
73 and $SOURCEFORGE_USER variables) to sign and upload the bundles to
74 both Savannah and SourceForge. The signing code has been taken from
75 the `gnupload' script (part of the automake bundle).
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000076
77 #!/bin/sh
Werner Lemberg87a5a432007-01-17 12:44:39 +000078
Werner Lemberg3aee4292013-11-25 00:28:11 +010079 VERSION=2.5.1
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000080 SAVANNAH_USER=wl
Werner Lembergbe54a682008-06-29 07:43:41 +000081 SOURCEFORGE_USER=wlemb
Werner Lemberg87a5a432007-01-17 12:44:39 +000082
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000083 #####################################################################
Werner Lemberg87a5a432007-01-17 12:44:39 +000084
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000085 GPG='/usr/bin/gpg --batch --no-tty'
86
87 version=`echo $VERSION | sed "s/\\.//g"`
88
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +020089 FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
90 freetype-$VERSION.tar.bz2 \
Werner Lembergdd9d7ca2009-10-10 21:19:35 +020091 ft$version.zip"
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +020092 FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
93 ft2demos-$VERSION.tar.bz2 \
Werner Lembergdd9d7ca2009-10-10 21:19:35 +020094 ftdmo$version.zip"
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +020095 FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
96 freetype-doc-$VERSION.tar.bz2 \
Werner Lembergdd9d7ca2009-10-10 21:19:35 +020097 ftdoc$version.zip"
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +000098
Werner Lembergdd9d7ca2009-10-10 21:19:35 +020099 PACKAGE_LIST="$FREETYPE_PACKAGES \
100 $FT2DEMOS_PACKAGES \
101 $FTDOC_PACKAGES"
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +0000102
103 set -e
104 unset passphrase
105
106 PATH=/empty echo -n "Enter GPG passphrase: "
107 stty -echo
108 read -r passphrase
109 stty echo
110 echo
111
112 for f in $PACKAGE_LIST; do
113 if test ! -f $f; then
114 echo "$0: Cannot find \`$f'" 1>&2
115 exit 1
116 else
117 :
118 fi
119 done
120
121 for f in $PACKAGE_LIST; do
122 echo "Signing $f..."
123 rm -f $f.sig
124 echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
125 done
126
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +0200127 FREETYPE_SIGNATURES=
128 for i in $FREETYPE_PACKAGES; do
129 FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +0000130 done
131
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +0200132 FT2DEMOS_SIGNATURES=
133 for i in $FT2DEMOS_PACKAGES; do
134 FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
135 done
136
137 FTDOC_SIGNATURES=
138 for i in $FTDOC_PACKAGES; do
139 FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
140 done
141
Werner Lembergdd9d7ca2009-10-10 21:19:35 +0200142 SIGNATURE_LIST="$FREETYPE_SIGNATURES \
143 $FT2DEMOS_SIGNATURES \
144 $FTDOC_SIGNATURES"
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +0200145
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +0000146 scp $PACKAGE_LIST $SIGNATURE_LIST \
147 $SAVANNAH_USER@dl.sv.nongnu.org:/releases/freetype/
148
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +0200149 rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
150 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
151 rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
152 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
153 rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
154 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
Werner Lemberg87a5a432007-01-17 12:44:39 +0000155
Werner Lemberg3b3f2ba2007-01-25 22:14:40 +0000156 # EOF
157
Werner Lembergbb18bf72011-11-15 08:34:54 +0100158. Prepare a README for SourceForge and upload it with the following
159 script (with updated `$VERSION' and $SOURCEFORGE_USER variables).
Werner Lemberg87a5a432007-01-17 12:44:39 +0000160
Werner Lembergbb18bf72011-11-15 08:34:54 +0100161 #!/bin/sh
162
Werner Lemberg3aee4292013-11-25 00:28:11 +0100163 VERSION=2.5.1
Werner Lembergbb18bf72011-11-15 08:34:54 +0100164 SOURCEFORGE_USER=wlemb
165
166 #####################################################################
167
168 rsync -avP -e ssh README \
169 $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
170
171 # EOF
172
Werner Lemberg3aee4292013-11-25 00:28:11 +0100173. On SourceForge, tag the just uploaded `ftXXX.zip' and
Werner Lembergbb18bf72011-11-15 08:34:54 +0100174 `freetype-XXX.tar.bz2' files as the default files to download for
175 `Windows' and `Others', respectively.
Werner Lemberg87a5a432007-01-17 12:44:39 +0000176
177. Copy the reference files (generated by `make dist') to
178
Werner Lemberg3aee4292013-11-25 00:28:11 +0100179 <freetype-web git repository>/freetype2/docs/reference
Werner Lemberg87a5a432007-01-17 12:44:39 +0000180
Werner Lemberg3aee4292013-11-25 00:28:11 +0100181. Update the `freetype-web' repository. `git push' then automatically
182 triggers an update of the public web pages within ten minutes, due
183 to a cron script (on wl@freedesktop.org) that rsyncs with
Werner Lemberg87a5a432007-01-17 12:44:39 +0000184
Werner Lemberg3aee4292013-11-25 00:28:11 +0100185 freedesktop.org://srv/freetype.freedesktop.org/www
Werner Lemberg49f4d342005-06-16 19:07:08 +0000186
187. Announce new release on freetype-announce@nongnu.org and to relevant
188 newsgroups.
Werner Lemberg56c368c2005-06-04 23:00:25 +0000189
Werner Lembergf99d8462006-02-26 17:50:59 +0000190----------------------------------------------------------------------
Werner Lemberg56c368c2005-06-04 23:00:25 +0000191
Werner Lembergf57fc592015-01-17 20:41:43 +0100192Copyright 2003-2015 by
Werner Lemberg56c368c2005-06-04 23:00:25 +0000193David Turner, Robert Wilhelm, and Werner Lemberg.
194
Werner Lembergf99d8462006-02-26 17:50:59 +0000195This file is part of the FreeType project, and may only be used,
196modified, and distributed under the terms of the FreeType project
197license, LICENSE.TXT. By continuing to use, modify, or distribute
198this file you indicate that you have read the license and understand
199and accept it fully.
Werner Lemberg56c368c2005-06-04 23:00:25 +0000200
201
202--- end of release ---