1
0

HowToRelease.txt 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. ngIRCd - Next Generation IRC Server
  2. http://ngircd.barton.de/
  3. (c)2001-2024 Alexander Barton and Contributors.
  4. ngIRCd is free software and published under the
  5. terms of the GNU General Public License.
  6. -- HowToRelease.txt --
  7. I. Introduction
  8. ~~~~~~~~~~~~~~~
  9. Creating a new ngIRCd release requires a few steps to follow: the source
  10. tree must be in a releasable state (be up to date, include all required
  11. patches, be tested on as many platforms as possible), a name for the new
  12. release must be chosen, and all the files describing the release must be
  13. updated accordingly.
  14. Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
  15. major releases (e.g. "13", "17", "42", ...) introducing new features and
  16. sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).
  17. When creating pre-releases or release candidates, please use the tilde ("~")
  18. character to separate the "postfix" in the release number (e.g. "17~rc2"
  19. or "123.4~rc6").
  20. The release/version number of a build is automatically generated using the
  21. GIT "describe" command, see git-describe(1). Therefore it is required that
  22. a new release is tagged in the GIT tree and that the configure script is
  23. up-to-date (e.g. using ./autogen.sh) before generating the archives!
  24. II. How to prepare a new ngIRCd release?
  25. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  26. a) Make sure you have working versions of GNU autoconf and GNU automake
  27. installed on the system you use for generating the release:
  28. as of May 2020 we are using GNU autoconf 2.69 and GNU automake 1.11.6
  29. which seem to work just fine.
  30. NOTE: new releases of GNU automake DO NOT work, as they lack support for
  31. the "ansi2knr" wrapper and "de-ANSI-fication" support!
  32. b) Make sure the source tree is in a releasable state ;-)
  33. - Are all branches & patches merged? Check GitHub issues, pull requests
  34. and milestones!
  35. - Run as many tests as you can!
  36. - Is the AUTHORS.md file up to date? This command may be helpful:
  37. "( grep '>$' AUTHORS.md; git shortlog -se|cut -c8-|sed 's/^/- /' ) \
  38. | grep -Ev '(alex@barton.de|fw@strlen.de)' \
  39. | LC_ALL=de_DE.UTF-8 sort -u"
  40. c) Update the files describing the new release:
  41. - ChangeLog
  42. - NEWS
  43. d) Update the version numbers in the following files:
  44. - contrib/de.barton.ngircd.metainfo.xml
  45. - contrib/ngircd.spec
  46. e) Generate a new Debian change log entry in the following file, e.g. using
  47. the Debian "dch" tool of the "devscripts" package:
  48. - contrib/Debian/changelog
  49. f) Commit the above changes to GIT: "git add", "git commit"
  50. g) Create a new signed GIT tag for the new release: "git tag -s".
  51. Please note that we don't use the tilde ("~") here, instead use a simple
  52. hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...
  53. h) Run "./autogen.sh" to update the ./configure script with the correct
  54. release number (autogenerated using "git describe", see above).
  55. i) Run "./configure" to rebuild all generated Makefiles.
  56. j) Run "make distcheck" (and "make dist-tarZ && make dist-xz") to generate all
  57. of the distribution archives.
  58. k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"
  59. l) Upload and distribute the newly generated ngIRCd release archive(s)
  60. and GnuPG signatures (to the website, its mirrors, and GitHub).
  61. m) Update the ngIRCd website and its mirrors!
  62. n) Write an announcement to the mailing list, Twitter, ...
  63. o) Relax :-)