]> git.ipfire.org Git - thirdparty/man-pages.git/blame - RELEASE
share/mk/: Split makefiles
[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
AC
122 - Send (email) the lsm file to <lsm@qqx.org> with the
123 subject "add".
8a60be33 124
0837f281 125 (6) Email
8a60be33 126
0837f281 127 Send an announce email to linux-man, LKML, libc-alpha, and
315cc123
AC
128 possibly others that might be interested in the release,
129 such as distribution maintainers, or those who have
130 contributed to the release.
8a60be33 131
0837f281 132 The email should contain a mix of the git tag message, the
315cc123
AC
133 contents of Changes, and anything else that might be
134 relevant. Check old emails such as
0837f281 135 <https://lore.kernel.org/linux-man/4ba6c215-6d28-1769-52d3-04941b962ff3@kernel.org/T/#u>.
8a60be33 136
315cc123 137 The subject of the email should be
83f9c049 138 "man-pages-$new released".
8a60be33 139
0837f281 140 (7) Changes.old
8a60be33 141
315cc123
AC
142 Move the contents of <Changes> to <Changes.old>, and prepare
143 for the next release.
8a60be33 144
0837f281 145 - Copy contents of <Changes> to <Changes.old>:
8a60be33 146
0837f281
AC
147 $ (echo; echo) >> Changes.old
148 $ cat Changes >> Changes.old
8a60be33 149
0837f281 150 - Empty <Changes>:
8a60be33 151
83f9c049 152 $ git checkout man-pages-$new^^ -- Changes
8a60be33 153
0837f281 154 - Commit:
8a60be33 155
0837f281
AC
156 $ git add Changes Changes.old
157 $ git commit -sm \
315cc123 158 "Start of man-pages-NEXT: Move Changes to Changes.old"
8a60be33 159
0837f281 160 (8) Push
8a60be33 161
315cc123
AC
162 You've finished. When you confirm it's good, push to the
163 git repository.
2788d24f 164
0837f281 165 - Push:
2788d24f 166
0837f281 167 $ git push
83f9c049 168 $ git push korg man-pages-$new
9549e6f7
AC
169
170 korg is just my name for the remote.
02f78bad
AC
171
172Files
173 Changes, Changes.old
174 Change log. Includes most relevant changes.
175
b60faa4d 176 GNUmakefile, share/mk/dist.mk, share/mk/version.mk
315cc123
AC
177 Main makefiles used for releasing (however, others may also be
178 used by inclusion).
02f78bad
AC
179
180 lsm
181 Linux software map. See also <https://lsm.qqx.org/>.
182
7c90d7d0 183 .tmp/man-pages-<version>.tar{,.xz,.gz}
0766cc05 184 Generated tarballs. You can generate all with 'make -B dist', or
315cc123
AC
185 generate only some of them, with 'make -B dist-tar',
186 'make -B dist-xz', or 'make -B dist-gz'.
02f78bad
AC
187
188Versions
315cc123
AC
189 Use the DISTVERSION variable when running make(1) to specify a
190 version different than the default, which is generated with
191 git-describe(1). This needs to be done from the git repository,
192 and won't work from an extracted tarball.
02f78bad 193
0766cc05 194 $ make -B dist-xz DISTVERSION=6.01+43
02f78bad
AC
195
196Caveats
315cc123
AC
197 The version and date of last modification for each page is
198 hardcoded by the Makefile into the pages when the tarball is
199 generated. This means that it's not possible to generate a valid
200 tarball from another extracted tarball, since the version and
201 date will not be updated. Tarballs need to be created from the
202 git(1) repository.