1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +02:00
guile/doc/release.org
Ludovic Courtès b3a4dea943
doc: Update ‘release.org’.
* doc/release.org: Update links to CI and the web site.  Clarify what’s
optional.  Remove references to discontinued services.
2025-02-28 22:12:02 +01:00

171 lines
6.1 KiB
Org Mode
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+TITLE: Release Process for GNU Guile 3.0
#+AUTHOR: Ludovic Courtès
#+STARTUP: content
#+EMAIL: ludo@gnu.org
This document describes the typical release process for Guile 3.0.
* Preparing & uploading the tarball
** M-x debbugs-gnu
… or http://bugs.gnu.org/guile, for an idea of things to fix.
** Optionally, 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 [[https://ci.guix.gnu.org/jobset/guile][continuous integration]]
This contains builds and cross-builds on different platforms, with
different `configure' switches, different CPPFLAGS, and different
versions of the compiler.
You can also build things with Guix locally by running commands from the
top-level such as:
#+begin_example
guix build -f guix.scm
guix build -f guix.scm -s i686-linux
guix build -f guix.scm --target=aarch64-linux-gnu
guix build -f guix.scm --target=x86_64-w64-mingw32
#+end_example
*** Optionally, test portability to other CPUs and OSes
- Use the [[https://gcc.gnu.org/wiki/CompileFarm][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.
- The GNU/Hurd people have [[http://www.gnu.org/software/hurd/public_hurd_boxen.html][porter boxes]] (better yet: you can use a
[[https://guix.gnu.org/manual/devel/en/html_node/Virtualization-Services.html#index-childhurd_002c-offloading][childhurd]] on Guix System), and so does the [[http://www.opencsw.org/standards/build_farm][OpenCSW Solaris Team]].
- You can also send a link to the latest tarball to [[https://lists.gnu.org/mailman/listinfo/platform-testers][platform-testers]].
This will allow readers to test on possibly weird platforms and
report any bugs.
** 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_3.0.3' for symbols introduced in Guile 3.0.3.
** Tag v3.0.x
Create a signed Git tag, like this:
$ git tag -s -u MY-KEY -m "GNU Guile 3.0.X." v3.0.X
The tag *must* be `v3.0.X'. For the sake of consistency, always use
"GNU Guile 3.0.X." as the tag comment.
** Push the tag and changes
$ git push && git push --tags
Normally nobody committed in the meantime. ;-)
** Run "make distcheck"
This should trigger an `autoreconf', as `build-aux/git-version-gen'
notices the new tag. Make sure you have configured with all options
enabled (Readline, --enable-deprecated, etc.)
After "make distcheck", double-check that `./configure --version'
reports the new version number.
** Upload
$ ./build-aux/gnupload --to ftp.gnu.org:guile guile-3.0.X.tar.{lz,xz,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-3.0.X.tar.gz && \
wget ftp.gnu.org/gnu/guile/guile-3.0.X.tar.xz
$ diff guile-3.0.X.tar.gz ../guile-3.0.X.tar.gz
$ diff guile-3.0.X.tar.xz ../guile-3.0.X.tar.xz
You're almost done!
* Announcements
First, re-read the GNU Maintainers Guide on this topic (info "(maintain)
Announcements").
** Update web pages
- Update the version number in latest-guile-version in the (website
utils) module of the [[https://git.savannah.gnu.org/cgit/guile/guile-web.git][web site]].
- Add a news item by dropping a Markdown file under =posts/=.
- Build the web site: =haunt build=.
- Synchronize the files under site/ over the CVS repo.
** Update the on-line copy of the manual
Use `build-aux/gendocs', add to the manual/ directory of the web site.
$ cd doc/ref
$ ../../build-aux/gendocs.sh guile "GNU Guile 3.0.X Reference Manual"
** Prepare the email announcement
$ build-aux/announce-gen --release-type=stable --package-name=guile \
--previous-version=3.0.1 --current-version=3.0.2 \
--gpg-key-id=MY-KEY --url-directory=ftp://ftp.gnu.org/gnu/guile \
--bootstrap-tools=autoconf,automake,libtool,gnulib,makeinfo \
--gnulib-version=$( cd ~/src/gnulib ; git describe )
The subject must be "GNU Guile 3.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
Send to these places, preferably in the morning on a working day (UTC):
- guile-user@gnu.org, guile-devel@gnu.org, guile-sources@gnu.org
- info-gnu@gnu.org (for stable releases only!)
- comp.lang.scheme
Copyright © 2011, 2012, 2013, 2017, 2018, 2025 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.