]> git.ipfire.org Git - thirdparty/man-pages.git/blame - RELEASE
RELEASE: Add command to send lsm file
[thirdparty/man-pages.git] / RELEASE
CommitLineData
0837f281
AC
1Name
2 Release - instructions for releasing a new version
8a60be33 3
0837f281
AC
4Synopsis
5 Change log, git tag, tarball, LSM, email, and push.
8a60be33 6
0837f281 7Description
315cc123
AC
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".
8a60be33 13
02f78bad 14 Dependencies
580610dc
AC
15 To see the build-dependencies of the project, that is, the
16 dependencies of the build system, see `make help`.
02f78bad 17
315cc123
AC
18 Apart from that, the following commands are also needed for other
19 tasks shown below:
02f78bad
AC
20
21 - gpg(1)
22 - kup(1)
23
0837f281
AC
24 Steps
25 (1) Version
8a60be33 26
0837f281 27 - Decide the version number:
8a60be33 28
0837f281
AC
29 $ old=6.01
30 $ new=6.02
8a60be33 31
0837f281 32 (2) Changes
8a60be33 33
315cc123 34 Fill the <Changes> file. For that you can check older
299f7918
AC
35 commits: `git log -p --grep 'Changes: Ready for 6'`. It
36 needs manual intervention, but in those commit logs you can
315cc123 37 check a few commands that will help.
8a60be33 38
0837f281
AC
39 - Remember to change the version number, the date, and the
40 location.
8a60be33 41
315cc123
AC
42 - Remove any headers not used for a specific release
43 (usually happens with "New and changed links").
8a60be33 44
0837f281 45 - The structure is a bit freestyle, but keep it organized.
299f7918 46 Check how previous releases did it.
8a60be33 47
0837f281 48 - Commit:
8a60be33 49
0837f281 50 $ git add Changes
83f9c049 51 $ git commit -sm "Changes: Ready for $new"
8a60be33 52
0837f281 53 (3) Tag
8a60be33 54
0837f281 55 Create a signed tag. The tag message should note the most
315cc123
AC
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
299f7918
AC
59 tags:
60 `git tag | grep 'man-pages-6' | tac | xargs git show --stat`
8a60be33 61
0837f281 62 - Tag:
8a60be33 63
83f9c049 64 $ git tag -s man-pages-$new
8a60be33 65
0837f281 66 (4) Tarball
8a60be33 67
0837f281 68 Creating the tarball will embed in the manual pages both the
315cc123
AC
69 version number, and the date of last modification (in the
70 git repository, the pages have placeholders for the date and
71 the version).
8a60be33 72
315cc123
AC
73 You need to create a set of tarballs, sign the .tar archive,
74 and upload the compressed tarballs to <kernel.org>.
8a60be33 75
0837f281 76 In case you're creating a tarball for distributing a random
315cc123
AC
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
80 below.
8a60be33 81
0837f281 82 - Create the tarball:
8a60be33 83
0766cc05 84 $ make -Bj4 dist
8a60be33 85
315cc123
AC
86 Alternatively, you may want to only create a specific
87 kind of tarball with one of the following targets:
8a60be33 88
0766cc05 89 $ make -Bj4 dist-tar dist-xz dist-gz
8a60be33 90
0837f281 91 - Sign the tarball:
8a60be33 92
7c90d7d0 93 $ cd .tmp/
83f9c049 94 $ gpg --detach-sign --armor man-pages-$new.tar
8a60be33 95
926a7f36
AC
96 - Verify the signature:
97
83f9c049 98 $ gpg --verify man-pages-$new.tar{.asc,}
926a7f36 99
0837f281 100 - Upload the tarball:
8a60be33 101
83f9c049 102 $ kup put man-pages-$new.tar.{xz,asc} \
0837f281
AC
103 /pub/linux/docs/man-pages/
104 $ cd ..
8a60be33 105
0837f281 106 (5) LSM
8a60be33 107
299f7918
AC
108 Update the <lsm> file. Check old commits:
109 `git log -p -- lsm`.
8a60be33 110
0837f281 111 - Update the project version number.
8a60be33 112
0837f281 113 - Update the release date.
8a60be33 114
0837f281 115 - Update the tarball name and size.
8a60be33 116
0837f281 117 - Commit:
8a60be33 118
0837f281 119 $ git add lsm
83f9c049 120 $ git commit -sm "lsm: Released $new"
8a60be33 121
315cc123 122 - Send (email) the lsm file to <lsm@qqx.org> with the
8db78d5f
AC
123 subject "add":
124
125 $ neomutt -C -s add -i lsm lsm@qqx.org;
8a60be33 126
0837f281 127 (6) Email
8a60be33 128
0837f281 129 Send an announce email to linux-man, LKML, libc-alpha, and
315cc123
AC
130 possibly others that might be interested in the release,
131 such as distribution maintainers, or those who have
132 contributed to the release.
8a60be33 133
0837f281 134 The email should contain a mix of the git tag message, the
315cc123
AC
135 contents of Changes, and anything else that might be
136 relevant. Check old emails such as
0837f281 137 <https://lore.kernel.org/linux-man/4ba6c215-6d28-1769-52d3-04941b962ff3@kernel.org/T/#u>.
8a60be33 138
315cc123 139 The subject of the email should be
83f9c049 140 "man-pages-$new released".
8a60be33 141
0837f281 142 (7) Changes.old
8a60be33 143
315cc123
AC
144 Move the contents of <Changes> to <Changes.old>, and prepare
145 for the next release.
8a60be33 146
0837f281 147 - Copy contents of <Changes> to <Changes.old>:
8a60be33 148
0837f281
AC
149 $ (echo; echo) >> Changes.old
150 $ cat Changes >> Changes.old
8a60be33 151
0837f281 152 - Empty <Changes>:
8a60be33 153
83f9c049 154 $ git checkout man-pages-$new^^ -- Changes
8a60be33 155
0837f281 156 - Commit:
8a60be33 157
0837f281
AC
158 $ git add Changes Changes.old
159 $ git commit -sm \
315cc123 160 "Start of man-pages-NEXT: Move Changes to Changes.old"
8a60be33 161
0837f281 162 (8) Push
8a60be33 163
315cc123
AC
164 You've finished. When you confirm it's good, push to the
165 git repository.
2788d24f 166
0837f281 167 - Push:
2788d24f 168
0837f281 169 $ git push
83f9c049 170 $ git push korg man-pages-$new
9549e6f7
AC
171
172 korg is just my name for the remote.
02f78bad
AC
173
174Files
175 Changes, Changes.old
176 Change log. Includes most relevant changes.
177
b60faa4d 178 GNUmakefile, share/mk/dist.mk, share/mk/version.mk
315cc123
AC
179 Main makefiles used for releasing (however, others may also be
180 used by inclusion).
02f78bad
AC
181
182 lsm
183 Linux software map. See also <https://lsm.qqx.org/>.
184
7c90d7d0 185 .tmp/man-pages-<version>.tar{,.xz,.gz}
0766cc05 186 Generated tarballs. You can generate all with 'make -B dist', or
315cc123
AC
187 generate only some of them, with 'make -B dist-tar',
188 'make -B dist-xz', or 'make -B dist-gz'.
02f78bad
AC
189
190Versions
315cc123
AC
191 Use the DISTVERSION variable when running make(1) to specify a
192 version different than the default, which is generated with
193 git-describe(1). This needs to be done from the git repository,
194 and won't work from an extracted tarball.
02f78bad 195
0766cc05 196 $ make -B dist-xz DISTVERSION=6.01+43
02f78bad
AC
197
198Caveats
315cc123
AC
199 The version and date of last modification for each page is
200 hardcoded by the Makefile into the pages when the tarball is
201 generated. This means that it's not possible to generate a valid
202 tarball from another extracted tarball, since the version and
203 date will not be updated. Tarballs need to be created from the
204 git(1) repository.