diff options
-rw-r--r-- | meta/classes/create-spdx-2.2.bbclass | 11 | ||||
-rw-r--r-- | meta/lib/oe/spdx30_tasks.py | 13 | ||||
-rw-r--r-- | meta/lib/oe/spdx_common.py | 20 |
3 files changed, 23 insertions, 21 deletions
diff --git a/meta/classes/create-spdx-2.2.bbclass b/meta/classes/create-spdx-2.2.bbclass index 795ba1a882..cd1d6819bf 100644 --- a/meta/classes/create-spdx-2.2.bbclass +++ b/meta/classes/create-spdx-2.2.bbclass | |||
@@ -354,15 +354,6 @@ def add_download_packages(d, doc, recipe): | |||
354 | if f.type == "file": | 354 | if f.type == "file": |
355 | continue | 355 | continue |
356 | 356 | ||
357 | uri = f.type | ||
358 | proto = getattr(f, "proto", None) | ||
359 | if proto is not None: | ||
360 | uri = uri + "+" + proto | ||
361 | uri = uri + "://" + f.host + f.path | ||
362 | |||
363 | if f.method.supports_srcrev(): | ||
364 | uri = uri + "@" + f.revisions[name] | ||
365 | |||
366 | if f.method.supports_checksum(f): | 357 | if f.method.supports_checksum(f): |
367 | for checksum_id in CHECKSUM_LIST: | 358 | for checksum_id in CHECKSUM_LIST: |
368 | if checksum_id.upper() not in oe.spdx.SPDXPackage.ALLOWED_CHECKSUMS: | 359 | if checksum_id.upper() not in oe.spdx.SPDXPackage.ALLOWED_CHECKSUMS: |
@@ -377,7 +368,7 @@ def add_download_packages(d, doc, recipe): | |||
377 | c.checksumValue = expected_checksum | 368 | c.checksumValue = expected_checksum |
378 | package.checksums.append(c) | 369 | package.checksums.append(c) |
379 | 370 | ||
380 | package.downloadLocation = uri | 371 | package.downloadLocation = oe.spdx_common.fetch_data_to_uri(f, name) |
381 | doc.packages.append(package) | 372 | doc.packages.append(package) |
382 | doc.add_relationship(doc, "DESCRIBES", package) | 373 | doc.add_relationship(doc, "DESCRIBES", package) |
383 | # In the future, we might be able to do more fancy dependencies, | 374 | # In the future, we might be able to do more fancy dependencies, |
diff --git a/meta/lib/oe/spdx30_tasks.py b/meta/lib/oe/spdx30_tasks.py index 70d1bc7e8a..1ae13b4af8 100644 --- a/meta/lib/oe/spdx30_tasks.py +++ b/meta/lib/oe/spdx30_tasks.py | |||
@@ -379,22 +379,15 @@ def add_download_files(d, objset): | |||
379 | inputs.add(file) | 379 | inputs.add(file) |
380 | 380 | ||
381 | else: | 381 | else: |
382 | uri = fd.type | ||
383 | proto = getattr(fd, "proto", None) | ||
384 | if proto is not None: | ||
385 | uri = uri + "+" + proto | ||
386 | uri = uri + "://" + fd.host + fd.path | ||
387 | |||
388 | if fd.method.supports_srcrev(): | ||
389 | uri = uri + "@" + fd.revisions[name] | ||
390 | |||
391 | dl = objset.add( | 382 | dl = objset.add( |
392 | oe.spdx30.software_Package( | 383 | oe.spdx30.software_Package( |
393 | _id=objset.new_spdxid("source", str(download_idx + 1)), | 384 | _id=objset.new_spdxid("source", str(download_idx + 1)), |
394 | creationInfo=objset.doc.creationInfo, | 385 | creationInfo=objset.doc.creationInfo, |
395 | name=file_name, | 386 | name=file_name, |
396 | software_primaryPurpose=primary_purpose, | 387 | software_primaryPurpose=primary_purpose, |
397 | software_downloadLocation=uri, | 388 | software_downloadLocation=oe.spdx_common.fetch_data_to_uri( |
389 | fd, name | ||
390 | ), | ||
398 | ) | 391 | ) |
399 | ) | 392 | ) |
400 | 393 | ||
diff --git a/meta/lib/oe/spdx_common.py b/meta/lib/oe/spdx_common.py index dfe90f96cf..1ea55419ae 100644 --- a/meta/lib/oe/spdx_common.py +++ b/meta/lib/oe/spdx_common.py | |||
@@ -42,7 +42,6 @@ def is_work_shared_spdx(d): | |||
42 | 42 | ||
43 | 43 | ||
44 | def load_spdx_license_data(d): | 44 | def load_spdx_license_data(d): |
45 | |||
46 | with open(d.getVar("SPDX_LICENSES"), "r") as f: | 45 | with open(d.getVar("SPDX_LICENSES"), "r") as f: |
47 | data = json.load(f) | 46 | data = json.load(f) |
48 | # Transform the license array to a dictionary | 47 | # Transform the license array to a dictionary |
@@ -225,3 +224,22 @@ def get_patched_src(d): | |||
225 | bb.utils.mkdirhier(spdx_workdir) | 224 | bb.utils.mkdirhier(spdx_workdir) |
226 | finally: | 225 | finally: |
227 | d.setVar("WORKDIR", workdir) | 226 | d.setVar("WORKDIR", workdir) |
227 | |||
228 | |||
229 | def fetch_data_to_uri(fd, name): | ||
230 | """ | ||
231 | Translates a bitbake FetchData to a string URI | ||
232 | """ | ||
233 | uri = fd.type | ||
234 | # Map gitsm to git, since gitsm:// is not a valid URI protocol | ||
235 | if uri == "gitsm": | ||
236 | uri = "git" | ||
237 | proto = getattr(fd, "proto", None) | ||
238 | if proto is not None: | ||
239 | uri = uri + "+" + proto | ||
240 | uri = uri + "://" + fd.host + fd.path | ||
241 | |||
242 | if fd.method.supports_srcrev(): | ||
243 | uri = uri + "@" + fd.revisions[name] | ||
244 | |||
245 | return uri | ||