1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 12:29:55 +00:00

meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted

After commit [spdx 3.0: Rework how SPDX aliases are linked] applied, it set
license_text_map with SPDX alias other than actual ID

The property of simplelicensing_customIdToUri is ListProp(ObjectProp(DictionaryEntry))),
and class DictionaryEntry has key and value, the property of value is StringProp other
than ObjectProp in which could not support to decode/extract SPDX alias with actual ID
in image jsonld file
-----------
      "simplelicensing_customIdToUri": [
        {
          "type": "DictionaryEntry",
          "key": "LicenseRef-PD",
          "value": "http://spdxdocs.org/openembedded-alias/by-doc-hash/d53e90e23b12c4ad640809a74a810e86f31c76cdbdf36487712d22a33d53362a/sqlite3-native/UNIHASH/license-text/PD"
        }
      ],
-----------

Add special code in the linking to manually go through all of the
simplelicensing_customIdToUri DictionaryEntry items and resolve
any aliases to actual objects
-----------
      "simplelicensing_customIdToUri": [
        {
          "type": "DictionaryEntry",
          "key": "LicenseRef-PD",
          "value": "http://spdx.org/spdxdocs/sqlite3-native-e5cc0672-d8dd-57e8-a2df-fe4615831fda/162c62b5b011cd3f82f413b3dae4d6d1542201552c964d5ce69fe170e0720b85/license-text/PD"
        }
      ]
-----------

Suggested-by: Joshua Watt <jpewhacker@gmail.com>

(From OE-Core rev: f16c2eae5a7e1a483e1d537d8711d83fede75691)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
hongxu
2024-12-24 18:48:26 -08:00
committed by Richard Purdie
parent 446e74ccee
commit 0fee98b8e8
+12
View File
@@ -855,6 +855,18 @@ class ObjectSet(oe.spdx30.SHACLObjectSet):
self.doc.import_ = sorted(imports.values(), key=lambda e: e.externalSpdxId)
bb.debug(1, "Linking...")
self.link()
# Manually go through all of the simplelicensing_customIdToUri DictionaryEntry
# items and resolve any aliases to actual objects.
for lic in self.foreach_type(oe.spdx30.simplelicensing_LicenseExpression):
for d in lic.simplelicensing_customIdToUri:
if d.value.startswith(OE_ALIAS_PREFIX):
obj = self.find_by_id(d.value)
if obj is not None:
d.value = obj._id
else:
self.missing_ids.add(d.value)
self.missing_ids -= set(imports.keys())
return self.missing_ids