osbuild-depsolve-dnf: allow passing custom license index db file

Allow passing a custom license index db file for SBOM generation by
specifying it in the solver configuration.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
Tomáš Hozza 2025-02-04 18:14:22 +01:00 committed by Tomáš Hozza
parent 99a7047173
commit a07431bb34
3 changed files with 13 additions and 9 deletions

View file

@ -17,7 +17,7 @@ from osbuild.util.sbom.spdx import sbom_pkgset_to_spdx2_doc
class DNF(SolverBase):
def __init__(self, request, persistdir, cache_dir):
def __init__(self, request, persistdir, cache_dir, license_index_path=None):
arch = request["arch"]
releasever = request.get("releasever")
module_platform_id = request["module_platform_id"]
@ -93,6 +93,9 @@ class DNF(SolverBase):
# enable module resolving
self.base_module = dnf.module.module_base.ModuleBase(self.base)
# Custom license index file path use for SBOM generation
self.license_index_path = license_index_path
@staticmethod
def _dnfrepo(desc, parent_conf=None):
"""Makes a dnf.repo.Repo out of a JSON repository description"""
@ -167,15 +170,14 @@ class DNF(SolverBase):
def _timestamp_to_rfc3339(timestamp):
return datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%dT%H:%M:%SZ')
@staticmethod
def _sbom_for_pkgset(pkgset: List[dnf.package.Package]) -> Dict:
def _sbom_for_pkgset(self, pkgset: List[dnf.package.Package]) -> Dict:
"""
Create an SBOM document for the given package set.
For now, only SPDX v2 is supported.
"""
pkgset = dnf_pkgset_to_sbom_pkgset(pkgset)
spdx_doc = sbom_pkgset_to_spdx2_doc(pkgset)
spdx_doc = sbom_pkgset_to_spdx2_doc(pkgset, self.license_index_path)
return spdx_doc.to_dict()
def dump(self):