diff mbox series

pull-spdx-license.py: add the SPDX licenses exceptions

Message ID 20260627154904.338233-1-jan.vermaete@gmail.com
State New
Headers show
Series pull-spdx-license.py: add the SPDX licenses exceptions | expand

Commit Message

Jan Vermaete June 27, 2026, 3:49 p.m. UTC
Fetch and extract the SPDX exception licenses as the normal licenses are handled.

[YOCTO #16294]

Signed-off-by: Jan Vermaete <jan.vermaete@gmail.com>
---
 scripts/pull-spdx-licenses.py | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/scripts/pull-spdx-licenses.py b/scripts/pull-spdx-licenses.py
index 597a62133f..de1f5b7bad 100755
--- a/scripts/pull-spdx-licenses.py
+++ b/scripts/pull-spdx-licenses.py
@@ -55,20 +55,22 @@  def main():
             data = json.load(response)
             version = data["tag_name"]
 
-    print(f"Pulling SPDX license list version {version}")
-    req = urllib.request.Request(
-        f"https://raw.githubusercontent.com/spdx/license-list-data/{version}/json/licenses.json"
-    )
-    with urllib.request.urlopen(req) as response:
-        spdx_licenses = json.load(response)
+    spdx_licenses = {}
+    for jsonfile in ["licenses.json", "exceptions.json"]:
+        req = urllib.request.Request(
+            f"https://raw.githubusercontent.com/spdx/license-list-data/{version}/json/{jsonfile}"
+        )
+        with urllib.request.urlopen(req) as response:
+            spdx_licenses.update(json.load(response))
+            print(len(spdx_licenses))
 
     with (TOP_DIR / "meta" / "files" / "spdx-licenses.json").open("w") as f:
         json.dump(spdx_licenses, f, sort_keys=True, indent=2)
 
-    total_count = len(spdx_licenses["licenses"])
+    total_count = len(spdx_licenses["licenses"] + spdx_licenses["exceptions"])
     updated = 0
-    for idx, lic in enumerate(spdx_licenses["licenses"]):
-        lic_id = lic["licenseId"]
+    for idx, lic in enumerate(spdx_licenses["licenses"] + spdx_licenses["exceptions"]):
+        lic_id = lic.get("licenseId") or lic.get("licenseExceptionId")
 
         print(f"[{idx + 1} of {total_count}] ", end="")
 
@@ -88,7 +90,7 @@  def main():
             continue
 
         with dest_license_file.open("w") as f:
-            f.write(lic_data["licenseText"])
+            f.write(lic_data.get("licenseText") or lic_data.get("licenseExceptionText"))
         updated += 1
         print("done")