2 Release - instructions for releasing a new version
5 Change log, git tag, tarball, LSM, email, and push.
8 This are the instructions to release a new official version of
9 the project. However, these should also be useful for those who
10 simply want to package a random commit (this is done for example
11 by Gentoo). For packaging a random commit without an official
12 release, you only need step (4) "Tarball".
15 To see the build-dependencies of the project, that is, the
16 dependencies of the build system, see `make help`.
18 Apart from that, the following commands are also needed for other
27 - Decide the version number:
34 Fill the <Changes> file. For that you can check older
35 commits: `git log -p --grep 'Changes: Ready for 6'`. It
36 needs manual intervention, but in those commit logs you can
37 check a few commands that will help.
39 - Remember to change the version number, the date, and the
42 - Remove any headers not used for a specific release
43 (usually happens with "New and changed links").
45 - The structure is a bit freestyle, but keep it organized.
46 Check how previous releases did it.
51 $ git commit -sm "Changes: Ready for $new"
55 Create a signed tag. The tag message should note the most
56 important changes in the version being released, since it
57 will be read by users and packagers. It should include any
58 information that is especially relevant for them. Check old
60 `git tag | grep 'man-pages-6' | tac | xargs git show --stat`
64 $ git tag -s man-pages-$new
68 Creating the tarball will embed in the manual pages both the
69 version number, and the date of last modification (in the
70 git repository, the pages have placeholders for the date and
73 You need to create a set of tarballs, sign the .tar archive,
74 and upload the compressed tarballs to <kernel.org>.
76 In case you're creating a tarball for distributing a random
77 commit, it might be interesting to tweak a few parameters;
78 check the variables available at <share/mk/dist.mk>, and any
79 makefiles included by that one. See the "Versions" section
86 Alternatively, you may want to only create a specific
87 kind of tarball with one of the following targets:
89 $ make -Bj4 dist-tar dist-xz dist-gz
94 $ gpg --detach-sign --armor man-pages-$new.tar
96 - Verify the signature:
98 $ gpg --verify man-pages-$new.tar{.asc,}
100 - Upload the tarball:
102 $ kup put man-pages-$new.tar.{xz,asc} \
103 /pub/linux/docs/man-pages/
108 Update the <lsm> file. Check old commits:
111 - Update the project version number.
113 - Update the release date.
115 - Update the tarball name and size.
120 $ git commit -sm "lsm: Released $new"
122 - Send (email) the lsm file to <lsm@qqx.org> with the
125 $ neomutt -C -s add -i lsm lsm@qqx.org;
129 Send an announce email to linux-man, LKML, libc-alpha, and
130 possibly others that might be interested in the release,
131 such as distribution maintainers, or those who have
132 contributed to the release.
134 The email should contain a mix of the git tag message, the
135 contents of Changes, and anything else that might be
136 relevant. Check old emails such as
137 <https://lore.kernel.org/linux-man/4ba6c215-6d28-1769-52d3-04941b962ff3@kernel.org/T/#u>.
139 The subject of the email should be
140 "man-pages-$new released".
142 A list of contributors can be obtained with:
144 $ git log man-pages-$old..HEAD \
145 | grep -v -e Message-ID: -e Link: \
148 | sed 's/[^:]*: //' \
154 Move the contents of <Changes> to <Changes.old>, and prepare
155 for the next release.
157 - Copy contents of <Changes> to <Changes.old>:
159 $ (echo; echo) >> Changes.old
160 $ cat Changes >> Changes.old
164 $ git checkout man-pages-$new^^ -- Changes
168 $ git add Changes Changes.old
170 "Start of man-pages-NEXT: Move Changes to Changes.old"
174 You've finished. When you confirm it's good, push to the
180 $ git push korg man-pages-$new
182 korg is just my name for the remote.
186 Change log. Includes most relevant changes.
188 GNUmakefile, share/mk/dist.mk, share/mk/version.mk
189 Main makefiles used for releasing (however, others may also be
193 Linux software map. See also <https://lsm.qqx.org/>.
195 .tmp/man-pages-<version>.tar{,.xz,.gz}
196 Generated tarballs. You can generate all with 'make -B dist', or
197 generate only some of them, with 'make -B dist-tar',
198 'make -B dist-xz', or 'make -B dist-gz'.
201 Use the DISTVERSION variable when running make(1) to specify a
202 version different than the default, which is generated with
203 git-describe(1). This needs to be done from the git repository,
204 and won't work from an extracted tarball.
206 $ make -B dist-xz DISTVERSION=6.01+43
209 The version and date of last modification for each page is
210 hardcoded by the Makefile into the pages when the tarball is
211 generated. This means that it's not possible to generate a valid
212 tarball from another extracted tarball, since the version and
213 date will not be updated. Tarballs need to be created from the