public inbox for docs@lists.yoctoproject.org
 help / color / mirror / Atom feed
* [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

* [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

* 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

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