Thanks Jozef Chraplewski.
[bpt/guile.git] / doc / release.org
CommitLineData
2a8b3b80
LC
1#+TITLE: Release Process for GNU Guile 2.0
2#+AUTHOR: Ludovic Courtès
3#+EMAIL: ludo@gnu.org
4
5This document describes the typical release process for Guile 2.0.
6
7* Preparing & uploading the tarball
8
967394bc
LC
9** M-x debbugs-gnu
10
11… or http://bugs.gnu.org/guile, for an idea of things to fix.
12
2a8b3b80
LC
13** Update Gnulib
14
15The commit log's first line should be "Update Gnulib to X", where X is
16the output of `git describe' in the Gnulib repo.
17
18This allows us to keep track of the source code we use, in case a bug or
19security vulnerability gets fixed in Gnulib sometime later.
20
21Ideally update Gnulib several days prior to the release, so that
22portability or build issues can be uncovered in time.
23
24** Make sure it works, portably, and with different configurations
25
26*** Check [[http://hydra.nixos.org/jobset/gnu/guile-2-0][Hydra]]
27
28This contains builds and cross-builds on different platforms, with
29different `configure' switches, different CPPFLAGS, and different
30versions of the compiler.
31
32As of this writing, there are unfixed failures. For instance Darwin's
33compiler randomly crashes, preventing build completion; the FreeBSD 7.x
34box experiences Guile crashes while running the test suite, which were
35not fixed because not reproduced elsewhere. Even for these platforms,
36make sure "things don't get worse", at least.
37
38*** Check [[http://autobuild.josefsson.org/guile/][Autobuild]]
39
40This contains build reports from other people, typically on lesser used
41platforms, so it's worth checking.
42
43*** Use the [[http://gcc.gnu.org/wiki/CompileFarm][GCC Compile Farm]]
44
45Use the GCC Compile Farm to check on lesser used architectures or
46operating systems. In particular, the Farm has ARM, SPARC64, PowerPC,
47and MIPS GNU/Linux boxes (remember that this is not superfluous: Debian
48builds on 11 architectures). It also has FreeBSD and NetBSD boxes.
49
50*** Use porter boxes
51
52If you're still in a good mood, you may also want to check on porter
53boxes for other OSes. The GNU/Hurd people have [[http://www.gnu.org/software/hurd/public_hurd_boxen.html][porter boxes]], so does
54the [[http://www.opencsw.org/standards/build_farm][OpenCSW Solaris Team]].
55
967394bc
LC
56
57*** Post a pre-release announcement to `platform-testers@gnu.org'
58
59Send a link to [[http://hydra.nixos.org/job/gnu/guile-2-0/tarball/latest/download-by-type/file/source-dist][the latest tarball]]. This will allow readers to test on
60possibly weird platforms and report any bugs.
61
2a8b3b80
LC
62** Update `GUILE-VERSION'
63
64For stable releases, make sure to update the SONAME appropriately. To
65that end, review the commit logs for libguile in search of any C ABI
66changes (new functions added, existing functions deprecated, etc.)
67Change `LIBGUILE_INTERFACE_*' accordingly. Re-read the Libtool manual
68if in doubt.
69
70`libguile/libguile.map' should also be updated as new public symbols are
71added. Ideally, new symbols should get under a new version
72symbol---e.g., `GUILE_2.0.3' for symbols introduced in Guile 2.0.3.
73However, this has not been done for Guile <= 2.0.2.
74
75** Tag v2.0.x
76
77Create a signed Git tag, like this:
78
3eaa5876 79 $ git tag -s -u MY-KEY -m "GNU Guile 2.0.X." v2.0.X
2a8b3b80
LC
80
81The tag *must* be `v2.0.X'. For the sake of consistency, always use
82"GNU Guile 2.0.X." as the tag comment.
83
84** Push the tag and changes
85
86 $ git push && git push --tags
87
88Normally nobody committed in the meantime. ;-)
89
90** Run "make dist"
91
92This should trigger an `autoreconf', as `build-aux/git-version-gen'
93notices the new tag. After "make dist", double-check that `./configure
94--version' reports the new version number.
95
96The reason for running "make dist" instead of "make distcheck" is that
97it's much faster and any distribution issues should have been caught by
98Hydra already.
99
100** Upload
101
102 $ ./build-aux/gnupload --to ftp.gnu.org:guile guile-2.0.X.tar.gz
103
104You'll get an email soon after when the upload is complete.
105
106Your GPG public key must be registered for this to work (info
107"(maintain) Automated Upload Registration").
108
109Make sure to publish your public key on public OpenPGP servers
110(keys.gnupg.net, pgp.mit.edu, etc.), so that people can actually use it
111to check the authenticity and integrity of the tarball.
112
113** Download
114
115Make sure the file was uploaded and is available for download as
116expected:
117
3eaa5876
LC
118 $ mkdir t && cd t && \
119 wget ftp.gnu.org/gnu/guile/guile-2.0.X.tar.gz && \
120 wget ftp.gnu.org/gnu/guile/guile-2.0.X.tar.xz
2a8b3b80 121 $ diff guile-2.0.X.tar.gz ../guile-2.0.X.tar.gz
3eaa5876 122 $ diff guile-2.0.X.tar.xz ../guile-2.0.X.tar.xz
2a8b3b80
LC
123
124You're almost done!
125
126* Announcements
127
128First, re-read the GNU Maintainers Guide on this topic (info "(maintain)
129Announcements").
130
131** Update web pages
132
133 - Replace any references to the previous version number and replace it
134 with the new one.
135 - Update news.html.
136
137** Update the on-line copy of the manual
138
3eaa5876
LC
139Use `build-aux/gendocs', add to the manual/ directory of the web site.
140
141 $ cd doc/ref
142 $ ../../build-aux/gendocs.sh guile "GNU Guile 2.0.X Reference Manual"
2a8b3b80
LC
143
144** Prepare the email announcement
145
146 $ build-aux/announce-gen --release-type=stable --package-name=guile \
147 --previous-version=2.0.1 --current-version=2.0.2 \
148 --gpg-key-id=MY-KEY --url-directory=ftp://ftp.gnu.org/gnu/guile \
149 --bootstrap-tools=autoconf,automake,libtool,gnulib \
150 --gnulib-version=$( cd ~/src/gnulib ; git describe )
151
152The subject must be "GNU Guile 2.0.X released". The text should remain
153formal and impersonal (it is sent on behalf of the Guile and GNU
154projects.) It must include a description of what Guile is (not everyone
155reading info-gnu may know about it.) Use the text of previous
156announcements as a template.
157
158Below the initial boilerplate that describes Guile should come the
159output of `announce-gen', and then the `NEWS' file excerpt in its
160entirety (don't call it a change log since that's not what it is.)
161
162** Send the email announcement
163
3eaa5876
LC
164Send to these places, preferably in the morning on a working day (UTC):
165
2a8b3b80
LC
166 - guile-user@gnu.org, guile-devel@gnu.org, guile-sources@gnu.org
167 - info-gnu@gnu.org (for stable releases only!)
168 - comp.lang.scheme
169
3eaa5876 170** Post a news item on [[http://sv.gnu.org/p/guile/][Savannah]]
2a8b3b80
LC
171
172The news will end up on planet.gnu.org. The text can be shorter and
173more informal, with a link to the email announcement for details.
174
175
176\f
3eaa5876 177Copyright © 2011, 2012 Free Software Foundation, Inc.
2a8b3b80
LC
178
179 Copying and distribution of this file, with or without modification,
180 are permitted in any medium without royalty provided the copyright
181 notice and this notice are preserved.