* [PATCH v2 0/3] set_versions.py: build with versions from releases.json
@ 2026-02-26 14:00 Antonin Godard
2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Antonin Godard @ 2026-02-26 14:00 UTC (permalink / raw)
To: docs; +Cc: Thomas Petazzoni, Antonin Godard
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
---
Changes in v2:
- add a python script to fetch and format the releases.json file
- instead of a make target, make it possible to use a different
releases.json file using an environment variable
- Link to v1: https://patch.msgid.link/20260225-releases-json-v1-0-fee3f01b9197@bootlin.com
---
Antonin Godard (3):
tools/fetch-releases-json: add to fetch and format releases.json
set_versions.py: build with versions from releases.json
set_versions.py: make it possible to use a different releases.json file
documentation/README | 9 +
documentation/releases.json | 623 ++++++++++++++++++++++++++++++++
documentation/set_versions.py | 100 +++--
documentation/tools/fetch-releases-json | 30 ++
4 files changed, 723 insertions(+), 39 deletions(-)
---
base-commit: ff3cfb0ed3515fe42ef25f055e039ebdfe66dac0
change-id: 20260223-releases-json-93f5d84dd93a
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-02-26 14:00 [PATCH v2 0/3] set_versions.py: build with versions from releases.json Antonin Godard @ 2026-02-26 14:00 ` Antonin Godard 2026-02-26 15:37 ` Antonin Godard 2026-02-27 10:26 ` [docs] " Quentin Schulz 2026-02-26 14:00 ` [PATCH v2 2/3] set_versions.py: build with versions from releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 3/3] set_versions.py: make it possible to use a different releases.json file Antonin Godard 2 siblings, 2 replies; 9+ messages in thread From: Antonin Godard @ 2026-02-26 14:00 UTC (permalink / raw) To: docs; +Cc: Thomas Petazzoni, Antonin Godard Add a simple script that can be used to fetch and format the releases.json file from https://dashboard.yoctoproject.org/releases.json. Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- documentation/README | 9 + documentation/releases.json | 623 ++++++++++++++++++++++++++++++++ documentation/tools/fetch-releases-json | 30 ++ 3 files changed, 662 insertions(+) diff --git a/documentation/README b/documentation/README index 7c4472c73..c45743c79 100644 --- a/documentation/README +++ b/documentation/README @@ -109,6 +109,15 @@ dependencies in a virtual environment: $ pipenv install $ pipenv run make html +Updating the releases.json file +=============================== + +The Yocto Project documentation uses the documentation/releases.json to know +which releases are currently supported and which are obsolete. This file can be +updated using the the following command: + + $ ./documentation/tools/fetch-releases-json documentation/releases.json + Style checking the Yocto Project documentation ============================================== diff --git a/documentation/releases.json b/documentation/releases.json new file mode 100644 index 000000000..f12cbbaa2 --- /dev/null +++ b/documentation/releases.json @@ -0,0 +1,623 @@ +[ + { + "series_version": "6.0", + "original_release_date": "", + "latest_release_date": "", + "release_codename": "Wrynose", + "latest_tag": "", + "releases": [ + "6.0_M1" + ], + "status": "Active Development", + "download": "", + "series": "current" + }, + { + "series_version": "5.3", + "original_release_date": "2025-11-26T17:14:07+00:00", + "latest_release_date": "2026-01-09T15:00:43+00:00", + "release_codename": "Whinlatter", + "latest_tag": "5.3.1", + "releases": [ + "5.3", + "5.3.1" + ], + "status": "Stable Release until May 2026", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.3.1", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.3.1/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "5.2", + "original_release_date": "2025-04-23T15:37:39+02:00", + "latest_release_date": "2025-09-12T16:48:58+02:00", + "release_codename": "Walnascar", + "latest_tag": "5.2.4", + "releases": [ + "5.2", + "5.2.1", + "5.2.2", + "5.2.3", + "5.2.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.2.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.2.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "5.1", + "original_release_date": "2024-09-03T10:35:52+02:00", + "latest_release_date": "2025-03-07T11:58:05+01:00", + "release_codename": "Styhead", + "latest_tag": "5.1.4", + "releases": [ + "5.1", + "5.1.1", + "5.1.2", + "5.1.3", + "5.1.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.1.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.1.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "5.0", + "original_release_date": "2024-04-15T17:39:29+02:00", + "latest_release_date": "2025-11-14T18:10:02+01:00", + "release_codename": "Scarthgap", + "latest_tag": "5.0.15", + "releases": [ + "5.0", + "5.0.1", + "5.0.10", + "5.0.11", + "5.0.12", + "5.0.13", + "5.0.14", + "5.0.15", + "5.0.2", + "5.0.3", + "5.0.4", + "5.0.5", + "5.0.6", + "5.0.7", + "5.0.8", + "5.0.9" + ], + "status": "LTS until Apr. 2028", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/RELEASENOTES", + "series": "current" + }, + { + "series_version": "4.3", + "original_release_date": "2023-10-06T09:59:00+02:00", + "latest_release_date": "2024-03-25T14:23:36+01:00", + "release_codename": "Nanbield", + "latest_tag": "4.3.4", + "releases": [ + "4.3", + "4.3.1", + "4.3.2", + "4.3.3", + "4.3.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.3.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.3.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "4.2", + "original_release_date": "2023-04-22T10:42:18+01:00", + "latest_release_date": "2023-10-31T10:26:24+01:00", + "release_codename": "Mickledore", + "latest_tag": "4.2.4", + "releases": [ + "4.2", + "4.2.1", + "4.2.2", + "4.2.3", + "4.2.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.2.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.2.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "4.1", + "original_release_date": "2022-10-06T10:22:27+02:00", + "latest_release_date": "2023-03-15T17:27:49+01:00", + "release_codename": "Langdale", + "latest_tag": "4.1.4", + "releases": [ + "4.1", + "4.1.1", + "4.1.2", + "4.1.3", + "4.1.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.1.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.1.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "4.0", + "original_release_date": "2022-04-13T16:54:23+01:00", + "latest_release_date": "2026-01-13T09:59:23+01:00", + "release_codename": "Kirkstone", + "latest_tag": "4.0.33", + "releases": [ + "4.0", + "4.0.1", + "4.0.10", + "4.0.11", + "4.0.12", + "4.0.13", + "4.0.14", + "4.0.15", + "4.0.16", + "4.0.17", + "4.0.18", + "4.0.19", + "4.0.2", + "4.0.20", + "4.0.21", + "4.0.22", + "4.0.23", + "4.0.24", + "4.0.25", + "4.0.26", + "4.0.27", + "4.0.28", + "4.0.29", + "4.0.3", + "4.0.30", + "4.0.31", + "4.0.32", + "4.0.33", + "4.0.4", + "4.0.5", + "4.0.6", + "4.0.7", + "4.0.8", + "4.0.9" + ], + "status": "LTS until Apr. 2026", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33/RELEASENOTES", + "series": "current" + }, + { + "series_version": "3.4", + "original_release_date": "2021-10-22T19:02:35+02:00", + "latest_release_date": "2022-04-29T17:41:27+02:00", + "release_codename": "Honister", + "latest_tag": "3.4.4", + "releases": [ + "3.4", + "3.4.1", + "3.4.2", + "3.4.3", + "3.4.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.4.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.4.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "3.3", + "original_release_date": "2021-04-15T22:10:07+12:00", + "latest_release_date": "2022-04-20T12:27:12+01:00", + "release_codename": "Hardknott", + "latest_tag": "3.3.6", + "releases": [ + "3.3", + "3.3.1", + "3.3.2", + "3.3.3", + "3.3.4", + "3.3.5", + "3.3.6" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.3.6", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.3.6/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "3.2", + "original_release_date": "2020-11-12T13:04:03+00:00", + "latest_release_date": "2021-05-06T11:19:57+01:00", + "release_codename": "Gatesgarth", + "latest_tag": "3.2.4", + "releases": [ + "3.2", + "3.2.1", + "3.2.2", + "3.2.3", + "3.2.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.2.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.2.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "3.1", + "original_release_date": "2020-04-07T15:17:11+01:00", + "latest_release_date": "2024-04-08T16:28:06+02:00", + "release_codename": "Dunfell", + "latest_tag": "3.1.33", + "releases": [ + "3.1", + "3.1.1", + "3.1.10", + "3.1.11", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.1.2", + "3.1.20", + "3.1.21", + "3.1.22", + "3.1.23", + "3.1.24", + "3.1.25", + "3.1.26", + "3.1.27", + "3.1.28", + "3.1.29", + "3.1.3", + "3.1.30", + "3.1.31", + "3.1.32", + "3.1.33", + "3.1.4", + "3.1.5", + "3.1.6", + "3.1.7", + "3.1.8", + "3.1.9" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.1.33", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.1.33/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "3.0", + "original_release_date": "2019-12-02T16:37:15-08:00", + "latest_release_date": "2020-08-16T00:00:04+01:00", + "release_codename": "Zeus", + "latest_tag": "3.0.4", + "releases": [ + "3.0", + "3.0.1", + "3.0.2", + "3.0.3", + "3.0.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.0.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-3.0.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.7", + "original_release_date": "2019-05-01T15:43:58-07:00", + "latest_release_date": "2020-05-17T22:35:29+01:00", + "release_codename": "Warrior", + "latest_tag": "2.7.4", + "releases": [ + "2.7", + "2.7.1", + "2.7.2", + "2.7.3", + "2.7.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.7.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.7.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.6", + "original_release_date": "2018-11-15T14:57:31-08:00", + "latest_release_date": "2019-10-29T11:13:32-07:00", + "release_codename": "Thud", + "latest_tag": "2.6.4", + "releases": [ + "2.6", + "2.6.1", + "2.6.2", + "2.6.3", + "2.6.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.6.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.6.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.5", + "original_release_date": "2018-05-18T11:33:49-07:00", + "latest_release_date": "2019-03-12T09:51:09-06:00", + "release_codename": "Sumo", + "latest_tag": "2.5.3", + "releases": [ + "2.5", + "2.5.1", + "2.5.2", + "2.5.3" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.5.3", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.5.3/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.4", + "original_release_date": "2017-10-16T09:33:13-07:00", + "latest_release_date": "2018-07-23T10:47:39-07:00", + "release_codename": "Rocko", + "latest_tag": "2.4.4", + "releases": [ + "2.4", + "2.4.1", + "2.4.2", + "2.4.3", + "2.4.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.4.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.4.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.3", + "original_release_date": "2017-05-09T15:13:40-07:00", + "latest_release_date": "2018-01-22T11:14:15-08:00", + "release_codename": "Pyro", + "latest_tag": "2.3.4", + "releases": [ + "2.3", + "2.3.1", + "2.3.2", + "2.3.3", + "2.3.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.3.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.3.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.2", + "original_release_date": "2016-10-21T13:55:32-07:00", + "latest_release_date": "2018-02-13T16:48:23-08:00", + "release_codename": "Morty", + "latest_tag": "2.2.4", + "releases": [ + "2.2", + "2.2.1", + "2.2.2", + "2.2.3", + "2.2.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.2.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.2.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.1", + "original_release_date": "2016-04-20T07:27:43-07:00", + "latest_release_date": "2017-06-05T08:04:07-07:00", + "release_codename": "Krogoth", + "latest_tag": "2.1.3", + "releases": [ + "2.1", + "2.1.1", + "2.1.2", + "2.1.3" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.1.3", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.1.3/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "2.0", + "original_release_date": "2015-10-29T10:22:30-07:00", + "latest_release_date": "2016-11-18T09:42:09-08:00", + "release_codename": "Jethro", + "latest_tag": "2.0.3", + "releases": [ + "2.0", + "2.0.1", + "2.0.2", + "2.0.3" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.3", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.3/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.8", + "original_release_date": "2015-04-09T16:04:58-07:00", + "latest_release_date": "2016-03-11T13:11:41-08:00", + "release_codename": "Fido", + "latest_tag": "1.8.2", + "releases": [ + "1.8", + "1.8.1", + "1.8.2" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.8.2", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.8.2/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.7", + "original_release_date": "2014-10-28T15:02:47-07:00", + "latest_release_date": "2015-11-07T08:29:16-08:00", + "release_codename": "Dizzy", + "latest_tag": "1.7.3", + "releases": [ + "1.7", + "1.7.1", + "1.7.2", + "1.7.3" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.7.3", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.7.3/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.6", + "original_release_date": "2014-04-23T11:35:25-07:00", + "latest_release_date": "2015-04-28T08:16:57-07:00", + "release_codename": "Daisy", + "latest_tag": "1.6.3", + "releases": [ + "1.6", + "1.6.1", + "1.6.2", + "1.6.3" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.6.3", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.6.3/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.5", + "original_release_date": "2013-10-07T13:34:44-07:00", + "latest_release_date": "2014-11-24T18:26:50-06:00", + "release_codename": "Dora", + "latest_tag": "1.5.4", + "releases": [ + "1.5", + "1.5.1", + "1.5.2", + "1.5.3", + "1.5.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.5.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.5.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.4", + "original_release_date": "2013-04-17T13:11:04-07:00", + "latest_release_date": "2014-05-12T21:14:18+03:00", + "release_codename": "Dylan", + "latest_tag": "1.4.4", + "releases": [ + "1.4", + "1.4.1", + "1.4.2", + "1.4.3", + "1.4.4" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.4.4", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.4.4/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.3", + "original_release_date": "2012-10-22T14:22:09-07:00", + "latest_release_date": "2018-03-29T14:40:51-07:00", + "release_codename": "Danny", + "latest_tag": "1.3.2", + "releases": [ + "1.3", + "1.3.1", + "1.3.2" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.3.2", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.3.2/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.2", + "original_release_date": "2012-07-19T06:58:24-07:00", + "latest_release_date": "2018-03-30T10:37:45-07:00", + "release_codename": "Denzil", + "latest_tag": "1.2.2", + "releases": [ + "1.2", + "1.2.1", + "1.2.2" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.2.2", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.2.2/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.1", + "original_release_date": "2011-10-05T12:07:29-07:00", + "latest_release_date": "2018-03-30T11:21:43-07:00", + "release_codename": "Edison", + "latest_tag": "1.1.2", + "releases": [ + "1.1", + "1.1.1", + "1.1.2" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.1.2", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.1.2/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "1.0", + "original_release_date": "2011-03-25T17:40:04+00:00", + "latest_release_date": "2018-03-30T17:12:49-07:00", + "release_codename": "Bernard", + "latest_tag": "1.0.2", + "releases": [ + "1.0", + "1.0.1", + "1.0.2" + ], + "status": "EOL", + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.0.2", + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-1.0.2/RELEASENOTES", + "series": "previous" + }, + { + "series_version": "0.9", + "original_release_date": "2010-10-22T13:56:31+01:00", + "latest_release_date": "2010-10-22T13:56:31+01:00", + "release_codename": "Laverne", + "latest_tag": "0.9.1", + "releases": [ + "0.9", + "0.9.1" + ], + "status": "EOL", + "download": "", + "release_notes": "", + "series": "previous" + } +] diff --git a/documentation/tools/fetch-releases-json b/documentation/tools/fetch-releases-json new file mode 100755 index 000000000..d06a1428f --- /dev/null +++ b/documentation/tools/fetch-releases-json @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# +# Fetch the releases.json file from the remote endpoint and format it. +# Copyright Linux Foundation +# Author: Antonin Godard <antonin.godard@bootlin.com> +# +# SPDX-License-Identifier: MIT +# + +import argparse +import json + +from pathlib import Path +from urllib.request import urlopen + + +def main(): + + parser = argparse.ArgumentParser(description="Fetch and format releases.json") + parser.add_argument("output", type=Path, help="Output releases.json file") + args = parser.parse_args() + + with urlopen("https://dashboard.yoctoproject.org/releases.json") as req: + releases = json.load(req) + with open(args.output, "w") as f: + json.dump(releases, f, indent=2) + + +if __name__ == "__main__": + main() -- 2.52.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard @ 2026-02-26 15:37 ` Antonin Godard 2026-02-27 10:26 ` [docs] " Quentin Schulz 1 sibling, 0 replies; 9+ messages in thread From: Antonin Godard @ 2026-02-26 15:37 UTC (permalink / raw) To: docs; +Cc: Thomas Petazzoni, Antonin Godard On Thu Feb 26, 2026 at 3:00 PM CET, Antonin Godard wrote: [...] > diff --git a/documentation/releases.json b/documentation/releases.json > new file mode 100644 > index 000000000..f12cbbaa2 > --- /dev/null > +++ b/documentation/releases.json > @@ -0,0 +1,623 @@ > +[ > + { > + "series_version": "6.0", > + "original_release_date": "", > + "latest_release_date": "", > + "release_codename": "Wrynose", > + "latest_tag": "", > + "releases": [ > + "6.0_M1" > + ], > + "status": "Active Development", > + "download": "", > + "series": "current" > + }, > + { > + "series_version": "5.3", > + "original_release_date": "2025-11-26T17:14:07+00:00", > + "latest_release_date": "2026-01-09T15:00:43+00:00", > + "release_codename": "Whinlatter", > + "latest_tag": "5.3.1", > + "releases": [ > + "5.3", > + "5.3.1" > + ], > + "status": "Stable Release until May 2026", > + "download": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.3.1", > + "release_notes": "https://downloads.yoctoproject.org/releases/yocto/yocto-5.3.1/RELEASENOTES", > + "series": "previous" Sorry, I sent a modified version of this file that I was using for local testing, and forgot to revert. I will fix this in the next iteration or when merging. Antonin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [docs] [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard 2026-02-26 15:37 ` Antonin Godard @ 2026-02-27 10:26 ` Quentin Schulz 2026-03-03 13:14 ` Antonin Godard 1 sibling, 1 reply; 9+ messages in thread From: Quentin Schulz @ 2026-02-27 10:26 UTC (permalink / raw) To: antonin.godard, docs; +Cc: Thomas Petazzoni Hi Antonin, On 2/26/26 3:00 PM, Antonin Godard via lists.yoctoproject.org wrote: > Add a simple script that can be used to fetch and format the > releases.json file from https://dashboard.yoctoproject.org/releases.json. > OK but why do we want this in the tree? It'll still be regularly outdated. I understand not wanting to rely on a network connection, but we already need that for the bitbake's object.inv we download... so this ain't that much different. Then, it's never outdated? [...] > diff --git a/documentation/tools/fetch-releases-json b/documentation/tools/fetch-releases-json > new file mode 100755 > index 000000000..d06a1428f > --- /dev/null > +++ b/documentation/tools/fetch-releases-json > @@ -0,0 +1,30 @@ > +#!/usr/bin/env python3 > +# > +# Fetch the releases.json file from the remote endpoint and format it. > +# Copyright Linux Foundation > +# Author: Antonin Godard <antonin.godard@bootlin.com> > +# > +# SPDX-License-Identifier: MIT > +# > + > +import argparse > +import json > + > +from pathlib import Path > +from urllib.request import urlopen > + > + > +def main(): > + > + parser = argparse.ArgumentParser(description="Fetch and format releases.json") > + parser.add_argument("output", type=Path, help="Output releases.json file") > + args = parser.parse_args() > + > + with urlopen("https://dashboard.yoctoproject.org/releases.json") as req: > + releases = json.load(req) > + with open(args.output, "w") as f: > + json.dump(releases, f, indent=2) > + Why not updating https://git.yoctoproject.org/yocto-autobuilder-helper/tree/scripts/release-parser.py#n134 to store with the proper indent already? json.dumps(data, indent=2) Then you don't need each consumer to add the indent. Or even better... why do you even care about a reviewable diff? The diff doesn't matter, it's the file itself that does. b4 shazam the patch, run the script locally/download the file, check that your git tree is unchanged, merge the patch? Or even betterer like I mentioned at the beginning of the mail, don't even version this file to begin with. Cheers, Quentin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [docs] [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-02-27 10:26 ` [docs] " Quentin Schulz @ 2026-03-03 13:14 ` Antonin Godard 2026-03-03 14:48 ` Quentin Schulz 0 siblings, 1 reply; 9+ messages in thread From: Antonin Godard @ 2026-03-03 13:14 UTC (permalink / raw) To: quentin.schulz, docs; +Cc: Thomas Petazzoni Hi, On Fri Feb 27, 2026 at 11:26 AM CET, Quentin Schulz via lists.yoctoproject.org wrote: > Hi Antonin, > > On 2/26/26 3:00 PM, Antonin Godard via lists.yoctoproject.org wrote: >> Add a simple script that can be used to fetch and format the >> releases.json file from https://dashboard.yoctoproject.org/releases.json. >> > > OK but why do we want this in the tree? It'll still be regularly outdated. > > I understand not wanting to rely on a network connection, but we already > need that for the bitbake's object.inv we download... so this ain't that > much different. You're right, I forgot about that inventory file :( made this change with an offline build in mind. Fetching the file when building seems like a proper solution, although: - IMO, we need to fallback on fixed values, even if they're outdated, to not block a documentation build if we can't fetch the releases.json file - on the Autobuilder, we need to do the opposite: block a build if we can't fetch the releases.json file - avoid fetching the file again if we already did (especially important on the Autobuilder as we don't want the file to be fetched for every tag + we don't want it to change during a build) With this in mind, I'll work on a v3. Thanks for your insights! Antonin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [docs] [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-03-03 13:14 ` Antonin Godard @ 2026-03-03 14:48 ` Quentin Schulz 2026-03-03 15:04 ` Antonin Godard 0 siblings, 1 reply; 9+ messages in thread From: Quentin Schulz @ 2026-03-03 14:48 UTC (permalink / raw) To: Antonin Godard, docs; +Cc: Thomas Petazzoni Hi Antonin, On 3/3/26 2:14 PM, Antonin Godard wrote: > Hi, > > On Fri Feb 27, 2026 at 11:26 AM CET, Quentin Schulz via lists.yoctoproject.org wrote: >> Hi Antonin, >> >> On 2/26/26 3:00 PM, Antonin Godard via lists.yoctoproject.org wrote: >>> Add a simple script that can be used to fetch and format the >>> releases.json file from https://dashboard.yoctoproject.org/releases.json. >>> >> >> OK but why do we want this in the tree? It'll still be regularly outdated. >> >> I understand not wanting to rely on a network connection, but we already >> need that for the bitbake's object.inv we download... so this ain't that >> much different. > > You're right, I forgot about that inventory file :( made this change with an > offline build in mind. > > Fetching the file when building seems like a proper solution, although: > > - IMO, we need to fallback on fixed values, even if they're outdated, to not > block a documentation build if we can't fetch the releases.json file > Makes sense. I actually thought about this a few days ago and I was wondering if we shouldn't simply have a single version as fallback... The current one. There's no reason to show multiple versions in the switcher (and elsewhere?) when there's only one built locally? So maybe still generate the file from git and not even attempt to download releases.json? > - on the Autobuilder, we need to do the opposite: block a build if we can't > fetch the releases.json file > > - avoid fetching the file again if we already did (especially important on the > Autobuilder as we don't want the file to be fetched for every tag + we don't > want it to change during a build) > Wondering if we can't simply handle releases.json downloading externally. I think we should still have whatever handles releases.json in the git repo(s) (but maybe not?) but we can simply put releases.json somewhere the script in the repo expects one to be present. Essentially... if there's a releases.json available at location X, you use it, if not, then you use the fallback of the current version. The git repo wouldn't have a releases.json, only the autobuilder downloads it once before building all docs. I guess the main issue is that we wouldn't know whether the current version is EoL if you don't download releases.json? Is it important? (thinking about people building the docs locally such that their colleagues only look at the documentation for the version they actually use). What do you think? Cheers, Quentin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [docs] [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json 2026-03-03 14:48 ` Quentin Schulz @ 2026-03-03 15:04 ` Antonin Godard 0 siblings, 0 replies; 9+ messages in thread From: Antonin Godard @ 2026-03-03 15:04 UTC (permalink / raw) To: Quentin Schulz, docs; +Cc: Thomas Petazzoni Hi, On Tue Mar 3, 2026 at 3:48 PM CET, Quentin Schulz wrote: > Hi Antonin, > > On 3/3/26 2:14 PM, Antonin Godard wrote: >> Hi, >> >> On Fri Feb 27, 2026 at 11:26 AM CET, Quentin Schulz via lists.yoctoproject.org wrote: >>> Hi Antonin, >>> >>> On 2/26/26 3:00 PM, Antonin Godard via lists.yoctoproject.org wrote: >>>> Add a simple script that can be used to fetch and format the >>>> releases.json file from https://dashboard.yoctoproject.org/releases.json. >>>> >>> >>> OK but why do we want this in the tree? It'll still be regularly outdated. >>> >>> I understand not wanting to rely on a network connection, but we already >>> need that for the bitbake's object.inv we download... so this ain't that >>> much different. >> >> You're right, I forgot about that inventory file :( made this change with an >> offline build in mind. >> >> Fetching the file when building seems like a proper solution, although: >> >> - IMO, we need to fallback on fixed values, even if they're outdated, to not >> block a documentation build if we can't fetch the releases.json file >> > > Makes sense. I actually thought about this a few days ago and I was > wondering if we shouldn't simply have a single version as fallback... > The current one. There's no reason to show multiple versions in the > switcher (and elsewhere?) when there's only one built locally? > > So maybe still generate the file from git and not even attempt to > download releases.json? Actually, we can simply have some default values for the following variables: activereleases = ["whinlatter", "scarthgap", "kirkstone"] devbranch = "wrynose" ltsseries = ["wrynose", "scarthgap", "kirkstone"] release_series = collections.OrderedDict({ "wrynose": "6.0", "whinlatter": "5.3", "scarthgap": "5.0", "kirkstone": "4.0", }) And fallback on them when we don't find a releases.json file locally and we aren't able to fetch it remotely. This should happen rarely, but I've added a warning if that happens (working on it right now). I'd rather keep the switchers version as it is, even in this case where we build locally and we only have one version to display. Just so it sort of matches what we're supposed to get from a releases.json file. I believe there are implications in how we compute the values in poky.yaml.in, which rely on this, so I'd rather not over-complicate it and provide default values in case we can't find a releases.json file, which should happen rarely anyway. >> - on the Autobuilder, we need to do the opposite: block a build if we can't >> fetch the releases.json file >> >> - avoid fetching the file again if we already did (especially important on the >> Autobuilder as we don't want the file to be fetched for every tag + we don't >> want it to change during a build) >> > > Wondering if we can't simply handle releases.json downloading > externally. I think we should still have whatever handles releases.json > in the git repo(s) (but maybe not?) but we can simply put releases.json > somewhere the script in the repo expects one to be present. > > Essentially... if there's a releases.json available at location X, you > use it, if not, then you use the fallback of the current version. The > git repo wouldn't have a releases.json, only the autobuilder downloads > it once before building all docs. > I guess the main issue is that we wouldn't know whether the current > version is EoL if you don't download releases.json? Is it important? > (thinking about people building the docs locally such that their > colleagues only look at the documentation for the version they actually > use). Not sure I follow exactly, but I'm working on the Autobuilder part too which generates this releases.json on the fly and uses it for each docs build. I hope that will answer most of your questions here. I think we still want to fetch the releases.json file in yocto-docs though, to give the user building locally an accurate version of what is hosted on docs.yoctoproject.org (and it doesn't cost much). And anyway, as you reminded, if a user cannot fetch the releases.json file from the remote location, they'll fallback on some possibly outdated active releases array (the default values above), but they'll also have a wall of errors due to lack of bitbake inventory. Antonin ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] set_versions.py: build with versions from releases.json 2026-02-26 14:00 [PATCH v2 0/3] set_versions.py: build with versions from releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard @ 2026-02-26 14:00 ` Antonin Godard 2026-02-26 14:00 ` [PATCH v2 3/3] set_versions.py: make it possible to use a different releases.json file Antonin Godard 2 siblings, 0 replies; 9+ messages in thread From: Antonin Godard @ 2026-02-26 14:00 UTC (permalink / raw) To: docs; +Cc: Thomas Petazzoni, Antonin Godard Build using the releases.json file obtained with ./documentation/tools/fetch-releases-json. This file needs to be updated each time a new release is out. Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- documentation/set_versions.py | 81 ++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/documentation/set_versions.py b/documentation/set_versions.py index 96903e14c..aa7c57062 100755 --- a/documentation/set_versions.py +++ b/documentation/set_versions.py @@ -11,57 +11,60 @@ # +import json import subprocess import collections import sys import os import itertools -# Order matters: most recent to least recent -activereleases = ["whinlatter", "scarthgap", "kirkstone"] -devbranch = "wrynose" -ltsseries = ["wrynose", "scarthgap", "kirkstone"] +from typing import Any, List, Dict, Tuple + +def get_releases(releases: Dict[str, Any]) -> Tuple[List[str], str, List[str], + collections.OrderedDict]: + """ + Go through a releases which is the opened releases.json file as + a dict, and return a tuple containing: + - the activereleases list: list of active release codenames + - the current dev branch + - the list of LTS releases (codenames) + - a dictionary mapping codename to point release series (e.g. "whinlatter": "5.3") + """ + + release_series = collections.OrderedDict() + activereleases = [] + devbranch = "" + ltsseries = [] + + for release in releases: + codename = release["release_codename"].lower() + release_series[codename] = release["series_version"] + if release["status"] == "Active Development": + devbranch = codename + if release["series"] == "current": + activereleases.append(codename) + if "LTS until" in release["status"]: + ltsseries.append(codename) + + activereleases.remove(devbranch) + + return activereleases, devbranch, ltsseries, release_series + +releases = {} + +with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), "releases.json"), "r") as f: + releases = json.load(f) + +activereleases, devbranch, ltsseries, release_series = get_releases(releases) # used by run-docs-builds to get the default page if len(sys.argv) > 1 and sys.argv[1] == "getlatest": print(activereleases[0]) sys.exit(0) -release_series = collections.OrderedDict() -release_series["wrynose"] = "6.0" -release_series["whinlatter"] = "5.3" -release_series["walnascar"] = "5.2" -release_series["styhead"] = "5.1" -release_series["scarthgap"] = "5.0" -release_series["nanbield"] = "4.3" -release_series["mickledore"] = "4.2" -release_series["langdale"] = "4.1" -release_series["kirkstone"] = "4.0" -release_series["honister"] = "3.4" -release_series["hardknott"] = "3.3" -release_series["gatesgarth"] = "3.2" -release_series["dunfell"] = "3.1" -release_series["zeus"] = "3.0" -release_series["warrior"] = "2.7" -release_series["thud"] = "2.6" -release_series["sumo"] = "2.5" -release_series["rocko"] = "2.4" -release_series["pyro"] = "2.3" -release_series["morty"] = "2.2" -release_series["krogoth"] = "2.1" -release_series["jethro"] = "2.0" -release_series["jethro-pre"] = "1.9" -release_series["fido"] = "1.8" -release_series["dizzy"] = "1.7" -release_series["daisy"] = "1.6" -release_series["dora"] = "1.5" -release_series["dylan"] = "1.4" -release_series["danny"] = "1.3" -release_series["denzil"] = "1.2" -release_series["edison"] = "1.1" -release_series["bernard"] = "1.0" -release_series["laverne"] = "0.9" - +print(f"activereleases calculated to be {activereleases}") +print(f"devbranch calculated to be {devbranch}") +print(f"ltsseries calculated to be {ltsseries}") bitbake_mapping = { "wrynose" : "2.18", -- 2.52.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/3] set_versions.py: make it possible to use a different releases.json file 2026-02-26 14:00 [PATCH v2 0/3] set_versions.py: build with versions from releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 2/3] set_versions.py: build with versions from releases.json Antonin Godard @ 2026-02-26 14:00 ` Antonin Godard 2 siblings, 0 replies; 9+ messages in thread From: Antonin Godard @ 2026-02-26 14:00 UTC (permalink / raw) To: docs; +Cc: Thomas Petazzoni, Antonin Godard Make it possible to use an external releases.json file through the EXTERNAL_RELEASES_JSON environment variable. This will be used on the Autobuilder to fetch the latest releases from https://dashboard.yoctoproject.org/releases.json. Print a warning in case the external ones has a different list of active releases, and show how to update this file in the yocto-docs repository. Having this done through an environment variable makes it much easier to make this apply to all builds of the documentation (even older tags). Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- documentation/set_versions.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/documentation/set_versions.py b/documentation/set_versions.py index aa7c57062..6fc318695 100755 --- a/documentation/set_versions.py +++ b/documentation/set_versions.py @@ -57,6 +57,25 @@ with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), "releases.js activereleases, devbranch, ltsseries, release_series = get_releases(releases) +external_releases_json = os.getenv("EXTERNAL_RELEASES_JSON", None) +if external_releases_json is not None: + print(f"Using external {external_releases_json}") + with open(external_releases_json, "r") as f: + releases = json.load(f) + + activereleases_e, devbranch, ltsseries, release_series = get_releases(releases) + + if activereleases != activereleases_e: + print("WARNING: The external releases.json file has different active releases: " + f"local {activereleases} != external {activereleases_e}") + print("WARNING: Update of this file at" + " https://git.yoctoproject.org/yocto-docs/tree/documentation/releases.json" + " may be needed") + print("WARNING: Update using './documentation/tools/fetch-releases-json" + " documentation/releases.json' in yocto-docs") + + activereleases = activereleases_e + # used by run-docs-builds to get the default page if len(sys.argv) > 1 and sys.argv[1] == "getlatest": print(activereleases[0]) -- 2.52.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-03 15:04 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-26 14:00 [PATCH v2 0/3] set_versions.py: build with versions from releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 1/3] tools/fetch-releases-json: add to fetch and format releases.json Antonin Godard 2026-02-26 15:37 ` Antonin Godard 2026-02-27 10:26 ` [docs] " Quentin Schulz 2026-03-03 13:14 ` Antonin Godard 2026-03-03 14:48 ` Quentin Schulz 2026-03-03 15:04 ` Antonin Godard 2026-02-26 14:00 ` [PATCH v2 2/3] set_versions.py: build with versions from releases.json Antonin Godard 2026-02-26 14:00 ` [PATCH v2 3/3] set_versions.py: make it possible to use a different releases.json file Antonin Godard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox