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