commit 4162b8d944db3dc313b680460c654b11938460e9
parent e28963e034813b23ea4ca680fcb8885bbf786789
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sat, 12 Oct 2024 11:32:26 +0200
some more notes on releases
Diffstat:
| M | developers/style.rst | | | 92 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------- |
1 file changed, 72 insertions(+), 20 deletions(-)
diff --git a/developers/style.rst b/developers/style.rst
@@ -456,25 +456,59 @@ you can then squash the commits or rename them.
Releases
========
-In order to make a release, first we make sure that the tests pass for
-autotools and meson in a non-experimental gnunet build:
+In this order do:
-.. code-block:: console
+0. Update your local tree
+
+1. Update the submodules ``contrib/gana`` and ``contrib/handbook``
+
+2. Run ``./bootstrap`` to regenerate files
+
+3. *Optional*: Update bootstrap HELLO file
+
+4. Update NEWS file and commit
+
+5. Tag the release (Named commit!)
+
+6. Run ``./bootstrap`` again and create tarball
+
+7. **IMPORTANT**: Compile and test tarballs
+
+8. Upload tarball
+
+9. *Optional*: Create meson tarball
- $ make check -k
- $ meson test --maxfail 0 --print-errorlogs
+10. Write release announcement
-If the tests pass we may put the finishing touches on the source tree.
-First, make sure the ``contrib/gana`` and ``contrib/handbook`` submodules
+
+**(1)** First, make sure the ``contrib/gana`` and ``contrib/handbook`` submodules
are up to date by entering the respective directory and execute:
.. code-block:: console
$ git pull origin master
-If any of the submodules was updated, commit the new submodule.
+If any of the submodules were updated, commit the new submodule.
+
+**(2)** You should now run ``./bootstrap`` once in order to re-generate header files from
+the gana submodule and/or po files:
+
+.. code-block:: console
+
+ $ ./bootstrap
+
+**(3)** If this is a major release, it makes sense to update the bootstrap peer
-Then, in order to pre-populate the news file with news hints
+HELLO. For this, you need access to the bootstrap peer (``GKZS``) and create
+the hello file. It is recommended to have it expire within a year:
+
+.. code-block:: console
+
+ $ gnunet-hello -e -E "1 year" -b -c gnunet.conf > GKZSYTE4H3N4RMYGFYEM95RV1CDRPH8QNJNTPMEB7C4QJGGR3KEG
+
+You can then update the file in ``data/hellos``.
+
+**(4)** Then, in order to pre-populate the news file with news hints
from commit messages (see above), we execute
.. code-block:: console
@@ -485,29 +519,47 @@ from commit messages (see above), we execute
Now edit the ``NEWS`` file to include all the noteworthy changes
you want to add and commit the file.
-You can now tag the release and build the tarball.
-Please use named tags.
-Then, we can run bootstrap again and make the tarball:
+
+**(5)** You can now tag the release. Please **always** use named tags (important for our
+nightly tarball build trigger).
.. code-block:: console
$ git tag v0.22.0 -m "GNUnet release v0.22.0"
+
+**(6)** Then, we can re-run ``./bootstrap`` and make the tarball:
+
+.. code-block:: console
+
$ ./bootstrap && make dist
-For meson you may run:
+**(7)** Test the created tarballs.
+For the autotools tarball:
+
+.. code-block:: console
+
+ $ ./configure
+ $ make && make install && make check
+
+**(8)** To distribute the tarballs create a release triplet as defined in the GNU guidelines and
+upload them to the FTP (https://www.gnu.org/prep//maintain/html_node/Automated-FTP-Uploads.html).
+
+**(9)** We also started releasing a meson tarball. This tarball is not uploaded to the
+official GNU mirrors (yet).
+In order to create a meson tarball you may run:
.. code-block:: console
- $ meson dist --no-tests --formats gztar --allow-dirty
+ $ ./bootstrap meson # not needed if ./bootstrap was already run
+ $ meson setup build && cd build
+ $ meson dist --formats gztar
-To distribute the tarballs create a release triplet from the
-output of ``make dist`` as defined in the GNU guidelines and
-upload them to the FTP (Maintainers only: https://www.gnu.org/prep//maintain/html_node/Automated-FTP-Uploads.html).
-For the meson tarball, rename it to ``gnunet-0.22.0-meson.tar.gz``.
-This file will also have to signed by a maintainer and uploaded to
+The file ``gnunet-0.22.0.tar.gz`` will be found inside ``build/meson-dist``.
+Rename the tarball to ``gnunet-0.22.0-meson.tar.gz``.
+This file must also be signed by a maintainer and the signature and tarball uploaded to
https://buildbot.gnunet.org/releases/.
-After the tarballs are uploaded, we need to write the announcement.
+**(10)** After the tarballs are uploaded, we need to write the announcement.
For minor releases, we only write a brief statement:
.. code-block:: text