diff options
author | Quentin Schulz <quentin.schulz@theobroma-systems.com> | 2022-07-19 10:12:12 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-07-20 14:25:01 +0100 |
commit | 9926c0bf2f272d386911639635885fc8c55abc14 (patch) | |
tree | c7e738e71765fb364b5507baf4a8dfff11ae6d61 /documentation/set_versions.py | |
parent | 102278a77f01fe0363f9a95b2c07fd15811a7b4a (diff) | |
download | poky-9926c0bf2f272d386911639635885fc8c55abc14.tar.gz |
docs: auto-generate releases.rst
In order to maintain one less file, let's auto-generate the releases.rst
file which contains a link for each release ever released.
This gets auto-generated by checking the tags available in this git repo
and adding a link for each that exists.
A few tags are notoriously missing from this git repo and they are
manually listed then, until the tags are pushed for the appropriate
commit.
Cc: Quentin Schulz <foss@0leil.net>
(From yocto-docs rev: c581eda3f87390b3e5223daff74d0ed6567ec51a)
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/set_versions.py')
-rwxr-xr-x | documentation/set_versions.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/documentation/set_versions.py b/documentation/set_versions.py index a7ceb3455a..ddf70851cb 100755 --- a/documentation/set_versions.py +++ b/documentation/set_versions.py | |||
@@ -1,9 +1,11 @@ | |||
1 | #!/usr/bin/env python3 | 1 | #!/usr/bin/env python3 |
2 | # | 2 | # |
3 | # Add version information to poky.yaml based upon current git branch/tags | 3 | # Add version information to poky.yaml based upon current git branch/tags |
4 | # Also generate the list of available manuals (releases.rst file) | ||
4 | # | 5 | # |
5 | # Copyright Linux Foundation | 6 | # Copyright Linux Foundation |
6 | # Author: Richard Purdie <richard.purdie@linuxfoundation.org> | 7 | # Author: Richard Purdie <richard.purdie@linuxfoundation.org> |
8 | # Author: Quentin Schulz <foss@0leil.net> | ||
7 | # | 9 | # |
8 | # SPDX-License-Identifier: MIT | 10 | # SPDX-License-Identifier: MIT |
9 | # | 11 | # |
@@ -14,6 +16,7 @@ import collections | |||
14 | import sys | 16 | import sys |
15 | import os | 17 | import os |
16 | import itertools | 18 | import itertools |
19 | import re | ||
17 | 20 | ||
18 | ourversion = None | 21 | ourversion = None |
19 | if len(sys.argv) == 2: | 22 | if len(sys.argv) == 2: |
@@ -231,3 +234,77 @@ with open("sphinx-static/switchers.js.in", "r") as r, open("sphinx-static/switch | |||
231 | 234 | ||
232 | print("switchers.js generated from switchers.js.in") | 235 | print("switchers.js generated from switchers.js.in") |
233 | 236 | ||
237 | # generate releases.rst | ||
238 | |||
239 | # list missing tags in yocto-docs | ||
240 | missing_tags = [ | ||
241 | 'yocto-0.9', | ||
242 | 'yocto-1.0', 'yocto-1.0.1', | ||
243 | 'yocto-1.1', 'yocto-1.1.1', | ||
244 | 'yocto-1.2', | ||
245 | 'yocto-1.4.4', 'yocto-1.4.5', | ||
246 | 'yocto-1.5', 'yocto-1.5.2', 'yocto-1.5.3', 'yocto-1.5.4', | ||
247 | 'yocto-1.6', 'yocto-1.6.1', 'yocto-1.6.2', | ||
248 | 'yocto-1.7', 'yocto-1.7.1', | ||
249 | 'yocto-1.9', | ||
250 | 'yocto-2.5.3', | ||
251 | 'yocto-3.1', 'yocto-3.1.1', 'yocto-3.1.2', 'yocto-3.1.3', | ||
252 | ] | ||
253 | |||
254 | semver = re.compile(r'yocto-(\d+)\.(\d+)(?:\.)?(\d*)') | ||
255 | |||
256 | # git is able to properly order semver versions but not python | ||
257 | # instead of adding a dependency on semver module, let's convert the version | ||
258 | # into a decimal number, e.g. 11.23.1 will be 112301 and 1.5 will be 010500 so | ||
259 | # it can be used as a key for the sorting algorithm. | ||
260 | # This can be removed once all the old tags are re-created. | ||
261 | def tag_to_semver_like(v): | ||
262 | v_semver = semver.search(v) | ||
263 | v_maj, v_min, v_patch = v_semver.groups('0') | ||
264 | return int("{:0>2}{:0>2}{:0>2}".format(v_maj, v_min, v_patch), 10) | ||
265 | |||
266 | yocto_tags = subprocess.run(["git", "tag", "--list", "--sort=version:refname", "yocto-*"], capture_output=True, text=True).stdout | ||
267 | yocto_tags = sorted(yocto_tags.split() + missing_tags, key=tag_to_semver_like) | ||
268 | tags = [tag[6:] for tag in yocto_tags] | ||
269 | |||
270 | with open('releases.rst', 'w') as f: | ||
271 | f.write('===========================\n') | ||
272 | f.write(' Supported Release Manuals\n') | ||
273 | f.write('===========================\n') | ||
274 | f.write('\n') | ||
275 | |||
276 | for activerelease in activereleases: | ||
277 | title = "Release Series %s (%s)" % (release_series[activerelease], activerelease) | ||
278 | f.write('*' * len(title) + '\n') | ||
279 | f.write(title + '\n') | ||
280 | f.write('*' * len(title) + '\n') | ||
281 | f.write('\n') | ||
282 | |||
283 | for tag in tags: | ||
284 | if tag == release_series[activerelease] or tag.startswith('%s.' % release_series[activerelease]): | ||
285 | f.write('- :yocto_docs:`%s Documentation </%s>`\n' % (tag, tag)) | ||
286 | f.write('\n') | ||
287 | |||
288 | f.write('==========================\n') | ||
289 | f.write(' Outdated Release Manuals\n') | ||
290 | f.write('==========================\n') | ||
291 | f.write('\n') | ||
292 | |||
293 | for series in release_series: | ||
294 | if series == devbranch or series in activereleases: | ||
295 | continue | ||
296 | |||
297 | if series == "jethro-pre": | ||
298 | continue | ||
299 | |||
300 | title = "Release Series %s (%s)" % (release_series[series], series) | ||
301 | f.write('*' * len(title) + '\n') | ||
302 | f.write(title + '\n') | ||
303 | f.write('*' * len(title) + '\n') | ||
304 | f.write('\n') | ||
305 | if series == "jethro": | ||
306 | f.write('- :yocto_docs:`1.9 Documentation </1.9>`\n') | ||
307 | for tag in tags: | ||
308 | if tag == release_series[series] or tag.startswith('%s.' % release_series[series]): | ||
309 | f.write('- :yocto_docs:`%s Documentation </%s>`\n' % (tag, tag)) | ||
310 | f.write('\n') | ||