diff options
| author | Joshua Watt <JPEWhacker@gmail.com> | 2021-09-01 08:44:53 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-09-03 09:53:29 +0100 |
| commit | 45ea7b7970ff69265e935dfc9c4adb7df848f739 (patch) | |
| tree | f4d234593f156b552f213591f37b32fd3141a115 | |
| parent | de3b8717863c4fd78d16852bf9c6f7b67dda57fd (diff) | |
| download | poky-45ea7b7970ff69265e935dfc9c4adb7df848f739.tar.gz | |
classes/create-spdx: Add special exception for Public Domain license
The Public Domain license (PD) needs a special exception in the license
processing since there is no common license text to be extracted for
these licenses.
(From OE-Core rev: fe5b757712aa99ff1ff10d2304ac320100635200)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/classes/create-spdx.bbclass | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/meta/classes/create-spdx.bbclass b/meta/classes/create-spdx.bbclass index aa640977f9..f72b7b762e 100644 --- a/meta/classes/create-spdx.bbclass +++ b/meta/classes/create-spdx.bbclass | |||
| @@ -51,6 +51,23 @@ def convert_license_to_spdx(lic, document, d): | |||
| 51 | import oe.spdx | 51 | import oe.spdx |
| 52 | 52 | ||
| 53 | license_data = d.getVar("SPDX_LICENSE_DATA") | 53 | license_data = d.getVar("SPDX_LICENSE_DATA") |
| 54 | |||
| 55 | def add_extracted_license(ident, name, text): | ||
| 56 | nonlocal document | ||
| 57 | |||
| 58 | for lic_data in license_data["licenses"]: | ||
| 59 | if lic_data["licenseId"] == ident: | ||
| 60 | return False | ||
| 61 | |||
| 62 | spdx_lic = oe.spdx.SPDXExtractedLicensingInfo() | ||
| 63 | spdx_lic.name = name | ||
| 64 | spdx_lic.licenseId = ident | ||
| 65 | spdx_lic.extractedText = text | ||
| 66 | |||
| 67 | document.hasExtractedLicensingInfos.append(spdx_lic) | ||
| 68 | |||
| 69 | return True | ||
| 70 | |||
| 54 | def convert(l): | 71 | def convert(l): |
| 55 | if l == "(" or l == ")": | 72 | if l == "(" or l == ")": |
| 56 | return l | 73 | return l |
| @@ -67,19 +84,11 @@ def convert_license_to_spdx(lic, document, d): | |||
| 67 | return spdx_license | 84 | return spdx_license |
| 68 | 85 | ||
| 69 | spdx_license = "LicenseRef-" + l | 86 | spdx_license = "LicenseRef-" + l |
| 70 | for spdx_lic in document.hasExtractedLicensingInfos: | ||
| 71 | if spdx_lic.licenseId == spdx_license: | ||
| 72 | return spdx_license | ||
| 73 | |||
| 74 | bb.warn("No SPDX License found for %s. Creating a place holder" % l) | ||
| 75 | 87 | ||
| 76 | spdx_lic = oe.spdx.SPDXExtractedLicensingInfo() | 88 | if l == "PD": |
| 77 | spdx_lic.name = l | 89 | add_extracted_license(spdx_license, l, "Software released to the public domain") |
| 78 | spdx_lic.licenseId = spdx_license | 90 | elif add_extracted_license(spdx_license, l, "This software is licensed under the %s license" % l): |
| 79 | # TODO: Extract the actual license text from the common license files | 91 | bb.warn("No SPDX License found for %s. Creating a place holder" % l) |
| 80 | spdx_lic.extractedText = "This software is licensed under the %s license" % l | ||
| 81 | |||
| 82 | document.hasExtractedLicensingInfos.append(spdx_lic) | ||
| 83 | 92 | ||
| 84 | return spdx_license | 93 | return spdx_license |
| 85 | 94 | ||
