Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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:
index["documents"].append({
"filename": info.name,
"documentNamespace": doc.documentNamespace,
+ "sha1": sha1,
})
for ref in doc.externalDocumentRefs:
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)