]>
Commit | Line | Data |
---|---|---|
0837f281 AC |
1 | Name |
2 | Release - instructions for releasing a new version | |
8a60be33 | 3 | |
0837f281 AC |
4 | Synopsis |
5 | Change log, git tag, tarball, LSM, email, and push. | |
8a60be33 | 6 | |
0837f281 | 7 | Description |
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 | |
172 | Files | |
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 | |
188 | Versions | |
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 | |
196 | Caveats | |
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. |