release 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. How to prepare a new release
  2. ----------------------------
  3. . include/freetype/freetype.h: Update `FREETYPE_MAJOR`,
  4. `FREETYPE_MINOR`, and `FREETYPE_PATCH`.
  5. . Update version numbers in all files where necessary (for example, do
  6. a grep for both '2.10.4' and '2104' for release 2.10.4).
  7. . builds/unix/configure.raw: Update `version_info`.
  8. . docs/CHANGES: Document differences to last release.
  9. . README: Update.
  10. . docs/VERSIONS.TXT: Document changed `version_info`.
  11. . Clone the git archive to another directory with
  12. git clone -l -s . ../freetype.test
  13. or something like this and run
  14. make distclean; make devel; make
  15. make distclean; make devel; make multi
  16. make distclean; make devel CC=g++; make CC=g++
  17. make distclean; make devel CC=g++; make multi CC=g++
  18. sh autogen.sh
  19. make distclean; ./configure CC=g++; make
  20. in the cloned repository to test compilation with both gcc and g++.
  21. Note that it is normally not necessary to test standard C
  22. compilation with the `configure`, `meson`, and `cmake` build tools
  23. since this is done by the CI process of 'gitlab.freetype.org' for
  24. every commit.
  25. . Test C++ compilation for 'freetype-demos' too (using `git clone` as
  26. above).
  27. . Run `src/tools/chktrcmp.py` and check that there are no undefined
  28. `trace_XXXX` macros.
  29. . After pushing the new release, tag the git repositories ('freetype',
  30. 'freetype-demos') with
  31. git tag VER-<version> -m "" -u <committer>
  32. and push the tags with
  33. git push --tags
  34. . Check with
  35. git clean -ndx
  36. that the git directory is really clean (and remove extraneous files
  37. if necessary).
  38. . Say `make dist` in both the 'freetype' and 'freetype-demos'
  39. repositories to generate the `.tar.gz`, `.tar.xz`, and `.zip` files.
  40. . Create the doc bundles (`freetype-doc-<version>.tar.gz`,
  41. `freetype-doc-<version>.tar.xz`, `ftdoc<version>.zip`). This is
  42. everything in
  43. <freetype-web git repository>/freetype2/docs
  44. except the `reference` subdirectory. Do *not* use option `-l` from
  45. zip!
  46. . Run the following script (with updated `$VERSION`, `$SAVANNAH_USER`,
  47. and `$SOURCEFORGE_USER` variables) to sign and upload the bundles to
  48. both Savannah and SourceForge. The signing code has been taken from
  49. the `gnupload` script (part of the 'automake' bundle).
  50. #!/bin/sh
  51. VERSION=2.12.0
  52. SAVANNAH_USER=wl
  53. SOURCEFORGE_USER=wlemb
  54. GPG_KEY_ID=BE6C3AAC63AD8E3F
  55. #####################################################################
  56. GPG="/usr/bin/gpg --batch --no-tty --local-user $GPG_KEY_ID"
  57. version=`echo $VERSION | sed "s/\\.//g"`
  58. FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
  59. freetype-$VERSION.tar.xz \
  60. ft$version.zip"
  61. FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
  62. ft2demos-$VERSION.tar.xz \
  63. ftdmo$version.zip"
  64. FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
  65. freetype-doc-$VERSION.tar.xz \
  66. ftdoc$version.zip"
  67. PACKAGE_LIST="$FREETYPE_PACKAGES \
  68. $FT2DEMOS_PACKAGES \
  69. $FTDOC_PACKAGES"
  70. set -e
  71. unset passphrase
  72. PATH=/empty echo -n "Enter GPG passphrase: "
  73. stty -echo
  74. read -r passphrase
  75. stty echo
  76. echo
  77. for f in $PACKAGE_LIST; do
  78. if test ! -f $f; then
  79. echo "$0: Cannot find \`$f'" 1>&2
  80. exit 1
  81. else
  82. :
  83. fi
  84. done
  85. for f in $PACKAGE_LIST; do
  86. echo "Signing $f..."
  87. rm -f $f.sig
  88. echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
  89. done
  90. FREETYPE_SIGNATURES=
  91. for i in $FREETYPE_PACKAGES; do
  92. FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
  93. done
  94. FT2DEMOS_SIGNATURES=
  95. for i in $FT2DEMOS_PACKAGES; do
  96. FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
  97. done
  98. FTDOC_SIGNATURES=
  99. for i in $FTDOC_PACKAGES; do
  100. FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
  101. done
  102. SIGNATURE_LIST="$FREETYPE_SIGNATURES \
  103. $FT2DEMOS_SIGNATURES \
  104. $FTDOC_SIGNATURES"
  105. scp $PACKAGE_LIST $SIGNATURE_LIST \
  106. [email protected]:/releases/freetype/
  107. rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
  108. $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
  109. rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
  110. $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
  111. rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
  112. $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
  113. # EOF
  114. . Prepare a `README` file for SourceForge and upload it with the
  115. following script (with updated `$VERSION` and `$SOURCEFORGE_USER`
  116. variables).
  117. #!/bin/sh
  118. VERSION=2.10.4
  119. SOURCEFORGE_USER=wlemb
  120. #####################################################################
  121. rsync -avP -e ssh README \
  122. $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
  123. # EOF
  124. . On SourceForge, tag the just uploaded `ftXXX.zip` and
  125. `freetype-XXX.tar.xz` files as the default files to download for
  126. 'Windows' and 'Others', respectively.
  127. . Trigger the automatic generation of the online API reference by
  128. updating the `FT_VERSION` variable in file `.gitlab-ci.yml` of the
  129. 'freetype-web' repository.
  130. . Announce new release on '[email protected]' and to
  131. relevant newsgroups. The text should include
  132. - SHA256 checksums of all files,
  133. - instructions how to verify the bundles using the `.sig` file data,
  134. - the PGP public key used to sign the archives.
  135. ----------------------------------------------------------------------
  136. Copyright (C) 2003-2022 by
  137. David Turner, Robert Wilhelm, and Werner Lemberg.
  138. This file is part of the FreeType project, and may only be used,
  139. modified, and distributed under the terms of the FreeType project
  140. license, LICENSE.TXT. By continuing to use, modify, or distribute
  141. this file you indicate that you have read the license and understand
  142. and accept it fully.
  143. --- end of release ---