gnunet-handbook

The GNUnet Handbook
Log | Files | Refs

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:
Mdevelopers/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