| Name |
| Release - instructions for releasing a new version |
| |
| Synopsis |
| git tag, tarball, LSM, email, and push. |
| |
| Description |
| This are the instructions to release a new official version of |
| the project. However, these should also be useful for those who |
| simply want to package a random commit. For packaging a random |
| commit without an official release, you only need step (3) |
| "Tarball". |
| |
| Dependencies |
| To see the build-dependencies of the project, that is, the |
| dependencies of the build system, run `make help`. |
| |
| Apart from that, the following commands are also needed for other |
| tasks shown below: |
| |
| - gpg(1) |
| - kup(1) |
| |
| Steps |
| (1) Version |
| |
| - Decide the version number: |
| |
| $ old=1.0-rc1 |
| $ new=1.0-rc2 |
| |
| (2) Tag |
| |
| Create a signed tag. The tag message should note the most |
| important changes in the version being released, since it |
| will be read by users and packagers. It should include any |
| information that is especially relevant for them. Check old |
| tags: |
| `git tag | grep 'liba2i-' | tac | xargs git show --stat` |
| |
| - Tag: |
| |
| $ git tag -s liba2i-$new |
| |
| (3) Tarball |
| |
| Creating the tarball will embed in the manual pages both the |
| version number, and the date of last modification (in the |
| git repository, the pages have placeholders for the date and |
| the version). |
| |
| You need to create a set of tarballs, sign the .tar archive, |
| and upload the compressed tarballs to <kernel.org>. |
| |
| In case you're creating a tarball for distributing a random |
| commit, it might be interesting to tweak a few parameters; |
| check the variables available at <share/mk/dist/>, and any |
| makefiles included by that one. See the "Versions" section |
| below. |
| |
| - Create the tarball: |
| |
| $ make -Bj4 dist |
| |
| - Check the tarball: |
| |
| $ make -j4 distcheck |
| |
| - Sign the tarball: |
| |
| $ cd .tmp/ |
| $ gpg --detach-sign --armor liba2i-$new.tar |
| |
| - Verify the signature: |
| |
| $ gpg --verify liba2i-$new.tar{.asc,} |
| |
| - Upload the tarball: |
| |
| $ kup mkdir /pub/software/libs/liba2i/1/1.0/$new |
| $ kup put liba2i-$new.tar.{xz,asc} \ |
| /pub/software/libs/liba2i/1/1.0/$new/ |
| $ cd .. |
| |
| (4) Push |
| |
| When you confirm it's good, push to the git repository. |
| |
| - Push: |
| |
| $ git push |
| $ git push korg liba2i-$new |
| |
| korg is just my name for the remote. |
| |
| (5) LSM |
| |
| Update the <lsm> file. Check old commits: |
| `git log -p -- share/doc/lsm`. |
| |
| - Update the project version number. |
| |
| - Update the release date. |
| |
| - Update the tarball name and size. |
| |
| - Commit: |
| |
| $ git add share/doc/lsm |
| $ git commit -sm "lsm: Released $new" |
| |
| - Send (email) the lsm file to <lsm@qqx.org> with the |
| subject "add": |
| |
| $ neomutt -C -s add -i lsm lsm@qqx.org; |
| |
| (6) Email |
| |
| Send an announce email to liba2i@, and possibly others that |
| might be interested in the release, such as distribution |
| maintainers, or those who have contributed to the release. |
| |
| The email should contain a forwarding of the lsm email from |
| step (5). |
| |
| The email should contain a mix of the git tag message, and |
| anything else that might be relevant. Check old emails such |
| as |
| <https://lore.kernel.org/linux-man/4ba6c215-6d28-1769-52d3-04941b962ff3@kernel.org/T/#u>. |
| |
| The subject of the email should be |
| "liba2i-$new released". |
| |
| A list of contributors can be obtained with: |
| |
| $ git log liba2i-$old..HEAD \ |
| | grep -v -e Message-ID: -e Link: \ |
| | grep '<.*@.*>' \ |
| | sed 's/^ *//' \ |
| | sed 's/[^:]*: //' \ |
| | sort \ |
| | uniq; |
| |
| Files |
| GNUmakefile |
| share/mk/ |
| Main makefiles used for releasing (however, others may also be |
| used by inclusion). |
| |
| share/doc/lsm |
| Linux software map. See also <https://lsm.qqx.org/>. |
| |
| .tmp/liba2i-<version>.tar* |
| Generated tarballs. You can generate all with 'make -B dist', or |
| generate only some of them, with targets of the form dist-*. |