mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
Add document describing the release process.
* doc/release.org: New file.
This commit is contained in:
parent
ae88d9bcf6
commit
2a8b3b8050
1 changed files with 164 additions and 0 deletions
164
doc/release.org
Normal file
164
doc/release.org
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
#+TITLE: Release Process for GNU Guile 2.0
|
||||||
|
#+AUTHOR: Ludovic Courtès
|
||||||
|
#+EMAIL: ludo@gnu.org
|
||||||
|
|
||||||
|
This document describes the typical release process for Guile 2.0.
|
||||||
|
|
||||||
|
* Preparing & uploading the tarball
|
||||||
|
|
||||||
|
** Update Gnulib
|
||||||
|
|
||||||
|
The commit log's first line should be "Update Gnulib to X", where X is
|
||||||
|
the output of `git describe' in the Gnulib repo.
|
||||||
|
|
||||||
|
This allows us to keep track of the source code we use, in case a bug or
|
||||||
|
security vulnerability gets fixed in Gnulib sometime later.
|
||||||
|
|
||||||
|
Ideally update Gnulib several days prior to the release, so that
|
||||||
|
portability or build issues can be uncovered in time.
|
||||||
|
|
||||||
|
** Make sure it works, portably, and with different configurations
|
||||||
|
|
||||||
|
*** Check [[http://hydra.nixos.org/jobset/gnu/guile-2-0][Hydra]]
|
||||||
|
|
||||||
|
This contains builds and cross-builds on different platforms, with
|
||||||
|
different `configure' switches, different CPPFLAGS, and different
|
||||||
|
versions of the compiler.
|
||||||
|
|
||||||
|
As of this writing, there are unfixed failures. For instance Darwin's
|
||||||
|
compiler randomly crashes, preventing build completion; the FreeBSD 7.x
|
||||||
|
box experiences Guile crashes while running the test suite, which were
|
||||||
|
not fixed because not reproduced elsewhere. Even for these platforms,
|
||||||
|
make sure "things don't get worse", at least.
|
||||||
|
|
||||||
|
*** Check [[http://autobuild.josefsson.org/guile/][Autobuild]]
|
||||||
|
|
||||||
|
This contains build reports from other people, typically on lesser used
|
||||||
|
platforms, so it's worth checking.
|
||||||
|
|
||||||
|
*** Use the [[http://gcc.gnu.org/wiki/CompileFarm][GCC Compile Farm]]
|
||||||
|
|
||||||
|
Use the GCC Compile Farm to check on lesser used architectures or
|
||||||
|
operating systems. In particular, the Farm has ARM, SPARC64, PowerPC,
|
||||||
|
and MIPS GNU/Linux boxes (remember that this is not superfluous: Debian
|
||||||
|
builds on 11 architectures). It also has FreeBSD and NetBSD boxes.
|
||||||
|
|
||||||
|
*** Use porter boxes
|
||||||
|
|
||||||
|
If you're still in a good mood, you may also want to check on porter
|
||||||
|
boxes for other OSes. The GNU/Hurd people have [[http://www.gnu.org/software/hurd/public_hurd_boxen.html][porter boxes]], so does
|
||||||
|
the [[http://www.opencsw.org/standards/build_farm][OpenCSW Solaris Team]].
|
||||||
|
|
||||||
|
** Update `GUILE-VERSION'
|
||||||
|
|
||||||
|
For stable releases, make sure to update the SONAME appropriately. To
|
||||||
|
that end, review the commit logs for libguile in search of any C ABI
|
||||||
|
changes (new functions added, existing functions deprecated, etc.)
|
||||||
|
Change `LIBGUILE_INTERFACE_*' accordingly. Re-read the Libtool manual
|
||||||
|
if in doubt.
|
||||||
|
|
||||||
|
`libguile/libguile.map' should also be updated as new public symbols are
|
||||||
|
added. Ideally, new symbols should get under a new version
|
||||||
|
symbol---e.g., `GUILE_2.0.3' for symbols introduced in Guile 2.0.3.
|
||||||
|
However, this has not been done for Guile <= 2.0.2.
|
||||||
|
|
||||||
|
** Tag v2.0.x
|
||||||
|
|
||||||
|
Create a signed Git tag, like this:
|
||||||
|
|
||||||
|
$ git tag -s u MY-KEY -m "GNU Guile 2.0.X." v2.0.X
|
||||||
|
|
||||||
|
The tag *must* be `v2.0.X'. For the sake of consistency, always use
|
||||||
|
"GNU Guile 2.0.X." as the tag comment.
|
||||||
|
|
||||||
|
** Push the tag and changes
|
||||||
|
|
||||||
|
$ git push && git push --tags
|
||||||
|
|
||||||
|
Normally nobody committed in the meantime. ;-)
|
||||||
|
|
||||||
|
** Run "make dist"
|
||||||
|
|
||||||
|
This should trigger an `autoreconf', as `build-aux/git-version-gen'
|
||||||
|
notices the new tag. After "make dist", double-check that `./configure
|
||||||
|
--version' reports the new version number.
|
||||||
|
|
||||||
|
The reason for running "make dist" instead of "make distcheck" is that
|
||||||
|
it's much faster and any distribution issues should have been caught by
|
||||||
|
Hydra already.
|
||||||
|
|
||||||
|
** Upload
|
||||||
|
|
||||||
|
$ ./build-aux/gnupload --to ftp.gnu.org:guile guile-2.0.X.tar.gz
|
||||||
|
|
||||||
|
You'll get an email soon after when the upload is complete.
|
||||||
|
|
||||||
|
Your GPG public key must be registered for this to work (info
|
||||||
|
"(maintain) Automated Upload Registration").
|
||||||
|
|
||||||
|
Make sure to publish your public key on public OpenPGP servers
|
||||||
|
(keys.gnupg.net, pgp.mit.edu, etc.), so that people can actually use it
|
||||||
|
to check the authenticity and integrity of the tarball.
|
||||||
|
|
||||||
|
** Download
|
||||||
|
|
||||||
|
Make sure the file was uploaded and is available for download as
|
||||||
|
expected:
|
||||||
|
|
||||||
|
$ mkdir t && cd t && wget ftp.gnu.org/gnu/guile/guile-2.0.X.tar.gz
|
||||||
|
$ diff guile-2.0.X.tar.gz ../guile-2.0.X.tar.gz
|
||||||
|
|
||||||
|
You're almost done!
|
||||||
|
|
||||||
|
* Announcements
|
||||||
|
|
||||||
|
First, re-read the GNU Maintainers Guide on this topic (info "(maintain)
|
||||||
|
Announcements").
|
||||||
|
|
||||||
|
** Update web pages
|
||||||
|
|
||||||
|
- Replace any references to the previous version number and replace it
|
||||||
|
with the new one.
|
||||||
|
- Update news.html.
|
||||||
|
|
||||||
|
** Update the on-line copy of the manual
|
||||||
|
|
||||||
|
- Use `build-aux/gendocs', add to the manual/ directory of the web
|
||||||
|
site.
|
||||||
|
|
||||||
|
** Prepare the email announcement
|
||||||
|
|
||||||
|
$ build-aux/announce-gen --release-type=stable --package-name=guile \
|
||||||
|
--previous-version=2.0.1 --current-version=2.0.2 \
|
||||||
|
--gpg-key-id=MY-KEY --url-directory=ftp://ftp.gnu.org/gnu/guile \
|
||||||
|
--bootstrap-tools=autoconf,automake,libtool,gnulib \
|
||||||
|
--gnulib-version=$( cd ~/src/gnulib ; git describe )
|
||||||
|
|
||||||
|
The subject must be "GNU Guile 2.0.X released". The text should remain
|
||||||
|
formal and impersonal (it is sent on behalf of the Guile and GNU
|
||||||
|
projects.) It must include a description of what Guile is (not everyone
|
||||||
|
reading info-gnu may know about it.) Use the text of previous
|
||||||
|
announcements as a template.
|
||||||
|
|
||||||
|
Below the initial boilerplate that describes Guile should come the
|
||||||
|
output of `announce-gen', and then the `NEWS' file excerpt in its
|
||||||
|
entirety (don't call it a change log since that's not what it is.)
|
||||||
|
|
||||||
|
** Send the email announcement
|
||||||
|
|
||||||
|
- guile-user@gnu.org, guile-devel@gnu.org, guile-sources@gnu.org
|
||||||
|
- info-gnu@gnu.org (for stable releases only!)
|
||||||
|
- comp.lang.scheme
|
||||||
|
|
||||||
|
** Post a news on [[http://sv.gnu.org/p/guile/][Savannah]]
|
||||||
|
|
||||||
|
The news will end up on planet.gnu.org. The text can be shorter and
|
||||||
|
more informal, with a link to the email announcement for details.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Copyright © 2011 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Copying and distribution of this file, with or without modification,
|
||||||
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
notice and this notice are preserved.
|
Loading…
Add table
Add a link
Reference in a new issue