def add_aliases(self):
for o in self.foreach_type(oe.spdx30.Element):
- if not o._id or o._id.startswith("_:"):
- continue
-
- alias_ext = get_alias(o)
- if alias_ext is None:
- unihash = self.d.getVar("BB_UNIHASH")
- namespace = self.get_namespace()
- if unihash not in o._id:
- bb.warn(f"Unihash {unihash} not found in {o._id}")
- elif namespace not in o._id:
- bb.warn(f"Namespace {namespace} not found in {o._id}")
- else:
- alias_ext = set_alias(
- o,
- o._id.replace(unihash, "UNIHASH").replace(
- namespace, self.d.getVar("PN")
- ),
- )
+ self.set_element_alias(o)
def remove_internal_extensions(self):
def remove(o):
str(uuid.uuid5(namespace_uuid, pn)),
)
+ def set_element_alias(self, e):
+ if not e._id or e._id.startswith("_:"):
+ return
+
+ alias_ext = get_alias(e)
+ if alias_ext is None:
+ unihash = self.d.getVar("BB_UNIHASH")
+ namespace = self.get_namespace()
+ if unihash not in e._id:
+ bb.warn(f"Unihash {unihash} not found in {e._id}")
+ elif namespace not in e._id:
+ bb.warn(f"Namespace {namespace} not found in {e._id}")
+ else:
+ alias_ext = set_alias(
+ e,
+ e._id.replace(unihash, "UNIHASH").replace(
+ namespace, self.d.getVar("PN")
+ ),
+ )
+
def new_spdxid(self, *suffix, include_unihash=True):
items = [self.get_namespace()]
if include_unihash:
scope=scope,
)
- def new_license_expression(self, license_expression, license_data, license_text_map={}):
+ def new_license_expression(
+ self, license_expression, license_data, license_text_map={}
+ ):
license_list_version = license_data["licenseListVersion"]
# SPDX 3 requires that the license list version be a semver
# MAJOR.MINOR.MICRO, but the actual license version might be
)
spdx_license_expression = " ".join(convert(l) for l in lic_split)
- return objset.new_license_expression(
+ o = objset.new_license_expression(
spdx_license_expression, license_data, license_text_map
)
+ objset.set_element_alias(o)
+ return o
def add_package_files(
build_objset = oe.sbom30.ObjectSet.new_objset(d, d.getVar("PN"))
build = build_objset.new_task_build("recipe", "recipe")
+ build_objset.set_element_alias(build)
+
build_objset.doc.rootElement.append(build)
build_objset.set_is_native(is_native)
set_var_field("DESCRIPTION", spdx_package, "description", package=package)
pkg_objset.new_scoped_relationship(
- [build._id],
+ [oe.sbom30.get_element_link_id(build)],
oe.spdx30.RelationshipType.hasOutput,
oe.spdx30.LifecycleScopeType.build,
[spdx_package],
pkg_objset.new_relationship(
[spdx_package],
oe.spdx30.RelationshipType.hasConcludedLicense,
- [package_spdx_license._id],
+ [oe.sbom30.get_element_link_id(package_spdx_license)],
)
# NOTE: CVE Elements live in the recipe collection