429c3d84a50a2a33c1608497f01b22d2bf2cc0c1
[ngircd-alex.git] / doc / HowToRelease.txt
1
2                      ngIRCd - Next Generation IRC Server
3
4                         (c)2001-2010 Alexander Barton,
5                     alex@barton.de, http://www.barton.de/
6
7                ngIRCd is free software and published under the
8                    terms of the GNU General Public License.
9
10                             -- HowToRelease.txt --
11
12
13 I. Introduction
14 ~~~~~~~~~~~~~~~
15
16 Creating a new ngIRCd release requires a few steps to follow: the source
17 tree must be in a releasable state (be up to date, include all required
18 patches, be tested on as many platforms as possible), a name for the new
19 release must be chosen, and all the files describing the release must be
20 updated accordingly.
21
22 Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
23 major releases (e.g. "13", "17", "42", ...) introducing new features and
24 sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).
25
26 When creating pre-releases or release candidates, please use the tilde ("~")
27 character to separate the "postfix" in the release number (e.g. "17~rc2"
28 or "123.4~rc6").
29
30 The release/version number of a build is automatically generated using the
31 GIT "describe" command, see git-describe(1). Therefore it is required that
32 a new release is tagged in the GIT tree and that the configure script is
33 up-to-date (e.g. using ./autogen.sh) before generating the archives!
34
35
36 II. How to prepare a new ngIRCd release?
37 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38
39 a) Make sure the source tree is in a releasable state ;-)
40
41 b) Make sure you have working versions of GNU autoconf and GNU automake
42    installed on the system you use for generating the release:
43    as of October 2010 we are using GNU autoconf 2.67 and GNU automake 1.11.1
44    which seem to work just fine.
45
46 c) Update the files describing the new release:
47     - ChangeLog
48     - NEWS
49
50 d) Update the version numbers in the following files:
51     - contrib/ngircd.spec
52
53 e) Generate a new Debian change log entry in the following file, e.g. using
54    the Debian "dch" tool of the "devscripts" package:
55     - contrib/Debian/changelog
56
57 f) Commit the above changes to GIT: "git add", "git commit"
58
59 g) Create a new signed GIT tag for the new release: "git tag -s".
60    Please note that we don't use the tilde ("~") here, instead use a simple
61    hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...
62
63 h) Run "./autogen.sh" to update the ./configure script with the correct
64    release number (autogenerated using "git describe", see above).
65
66 i) Run "./configure" to rebuild all generated Makefiles.
67
68 j) Run "make distcheck" to generate the distribution archives.
69
70 k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"
71
72 l) Upload and distribute the newly generated ngIRCd release archive(s)
73    and GnuPG signatures.
74
75 m) Write an announcement to the mailing list, freshmeat, Twitter, ...
76
77 n) Relax :-)