From ebfe78ad26b643ce0fb22ba5b3ede43da4a78987 Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Wed, 1 Sep 2021 08:44:43 -0500 Subject: classes/create-spdx: Add SHA1 to index file Signed-off-by: Joshua Watt Signed-off-by: Richard Purdie --- meta/classes/create-spdx.bbclass | 3 ++- meta/lib/oe/sbom.py | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/meta/classes/create-spdx.bbclass b/meta/classes/create-spdx.bbclass index e49d4d7e3c..5adad59065 100644 --- a/meta/classes/create-spdx.bbclass +++ b/meta/classes/create-spdx.bbclass @@ -627,7 +627,7 @@ python image_combine_spdx() { visited_docs.add(path) with path.open("rb") as f: - doc = oe.spdx.SPDXDocument.from_json(f) + doc, sha1 = oe.sbom.read_doc(f) f.seek(0) if doc.documentNamespace in visited_docs: @@ -651,6 +651,7 @@ python image_combine_spdx() { index["documents"].append({ "filename": info.name, "documentNamespace": doc.documentNamespace, + "sha1": sha1, }) for ref in doc.externalDocumentRefs: diff --git a/meta/lib/oe/sbom.py b/meta/lib/oe/sbom.py index d40e5b792f..294feee10b 100644 --- a/meta/lib/oe/sbom.py +++ b/meta/lib/oe/sbom.py @@ -45,11 +45,21 @@ def write_doc(d, spdx_doc, subdir): return doc_sha1 -def read_doc(filename): +def read_doc(fn): import hashlib import oe.spdx - - with filename.open("rb") as f: + import io + import contextlib + + @contextlib.contextmanager + def get_file(): + if isinstance(fn, io.IOBase): + yield fn + else: + with fn.open("rb") as f: + yield f + + with get_file() as f: sha1 = hashlib.sha1() while True: chunk = f.read(4096) -- cgit 1.2.3-korg