HOWTO-RELEASE 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. HOWTO-RELEASE:
  2. Notes on releasing.
  3. 0. Make sure that you have current FSF releases of autoconf, automake,
  4. and libtool packages installed under a common installation prefix
  5. and that these tools are in your executable search path prior to
  6. any other installed versions. Versions delivered with Linux may be
  7. altered so it is best to install official FSF releases. GNU 'm4'
  8. 1.4.16 is needed in order to avoid bugs in m4. These packages may
  9. be downloaded from the following ftp locations:
  10. m4 - ftp://ftp.gnu.org/pub/gnu/m4
  11. autoconf - ftp://ftp.gnu.org/pub/gnu/autoconf
  12. automake - ftp://ftp.gnu.org/pub/gnu/automake
  13. libtool - ftp://ftp.gnu.org/pub/gnu/libtool
  14. It is recommended to install m4 before autoconf, since the later
  15. requires the former.
  16. Release builds should only be done on a system with a functioning
  17. and correctly set system clock and on a filesystem which accurately
  18. records file update times. Use of GNU make is recommended.
  19. 1. Commit any unsaved changes.
  20. 2. Use gnulib's gitlog-to-changelog script to add new (since the last
  21. release) entries to the traditional ChangeLog file.
  22. http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/gitlog-to-changelog
  23. Take note of
  24. the most recent change note time stamp and use that as the starting
  25. point. Concatenate the old logs to the new logs. The added logs
  26. may be used to help produce the release notes (in next step). For
  27. example:
  28. gitlog-to-changelog --since=`head -n 1 ChangeLog | sed -e 's/ .*//g'` --append-dot > ChangeLog.added
  29. printf "\n" >> ChangeLog.added
  30. cat ChangeLog.added ChangeLog > ChangeLog.new
  31. mv ChangeLog.new ChangeLog
  32. rm ChangeLog.added
  33. 3. Create doc/releases/vX.X.rst and add it to git with 'git add doc/releases/vX.X.rst'.
  34. Update doc/releases/index.rst to point to the new file
  35. Take ChangeLog entries and rst-ify in there.
  36. Easist thing to do is take doc/releases/vX.(X-1).rst and use it as a template.
  37. 4. Add vX.X.rst file to the list of 'rst_sources' files in the doc/Makefile.am.
  38. 5. Update "Latest Stable Release" in doc/index.rst.
  39. 6. Increment the release version in configure.ac. Put 'alpha' or
  40. 'beta' after the version, if applicable. For example:
  41. 4.0.0
  42. or
  43. 4.0.0beta7
  44. Version should be updated in two places: in the second argument of the
  45. AC_INIT macro and in LIBTIFF_xxx_VERSION variables.
  46. 7. Update library ELF versioning in configure.ac (LIBTIFF_CURRENT,
  47. LIBTIFF_REVISION, and LIBTIFF_AGE). These numbers have nothing to
  48. do with the libtiff release version numbers.
  49. Note that as of libtiff 4.X, proper ELF versioning is used so
  50. please follow the rules listed in configure.ac. At a bare minimum,
  51. you should increment LIBTIFF_REVISION for each release so that
  52. installed library files don't overwrite existing files. If APIs
  53. have been added, removed, or interface structures have changed,
  54. then more care is required.
  55. 8. Add an entry to Changelog similar to:
  56. * libtiff 4.0.0 released.
  57. 9. In the source tree do
  58. ./autogen.sh
  59. This step may be skipped if you have already been using a
  60. maintainer build with current autoconf, automake, and libtool
  61. packages. It is only needed when updating tool versions.
  62. 10. It is recommended (but not required) to build outside of the source
  63. tree so that the source tree is kept in a pristine state. This
  64. also allows sharing the source directory on several networked
  65. systems. For example:
  66. mkdir libtiff-build
  67. cd libtiff-build
  68. /path/to/libtiff/configure --enable-maintainer-mode
  69. otherwise do
  70. ./configure --enable-maintainer-mode
  71. 11. In the build tree do
  72. make release
  73. This will update "RELEASE-DATE", "VERSION" in the source tree,
  74. and libtiff/tiffvers.h in the build tree.
  75. 12. In the source tree, verify that the version info in RELEASE-DATE,
  76. VERSION is right.
  77. In the build tree, verify that the version info in
  78. libtiff/tiffvers.h is right.
  79. 13. In the build tree do
  80. make
  81. make distcheck
  82. If 'make distcheck' fails, then correct any issues until it
  83. succeeds.
  84. Two files with names tiff-version.tar.gz and tiff-version.zip will
  85. be created in the top level build directory.
  86. 14. In the source tree do
  87. 'git status', 'git add .', 'git commit' and 'git push'
  88. 15. In the source tree, create a signed tag
  89. git tag -s v4.0.0 -m "Create tag for v4.0.0"
  90. (or the appropriate name for the release)
  91. and push it to "origin" (if "origin" points to the official repository)
  92. git push origin v4.0.0
  93. 16. Sign the release files in the build tree using your private key
  94. export GPG_TTY=$(tty)
  95. for file in tiff-*.tar.gz tiff-*.tar.xz tiff-*.zip ; do \
  96. gpg2 --output ${file}.sig --detach-sig $file ; \
  97. done
  98. for file in tiff-*.tar.gz tiff-*.tar.xz tiff-*.zip ; do \
  99. gpg2 --verify ${file}.sig $file ; \
  100. done
  101. 17. Copy release packages from the build tree to the
  102. ftp.remotesensing.org ftp site.
  103. scp tiff-*.tar.gz tiff-*.tar.gz.sig tiff-*.tar.xz tiff-*.tar.xz.sig tiff-*.zip tiff-*.zip.sig \
  104. bfriesen@upload.osgeo.org:/osgeo/download/libtiff
  105. 18. Create a gitlab release at https://gitlab.com/libtiff/libtiff/-/releases
  106. 19. Announce to list: tiff@lists.osgeo.org