summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorDenis OSTERLAND-HEIM <denis.osterland@diehl.com>2025-01-20 13:04:58 +0000
committerRoss Burton <ross.burton@arm.com>2025-01-23 12:14:29 +0000
commitf0c5b10901c5416fc29ddb8d06470ab20a9b8b88 (patch)
treea15b2c4e1892fae0474f9878037a65bc1db929ba /meta/classes
parent9e54ce7eac6886a037a6dc791abca2b918d96137 (diff)
downloadpoky-f0c5b10901c5416fc29ddb8d06470ab20a9b8b88.tar.gz
create-spdx: support line numbers
LIC_FILES_CHKSUM supports begin-/endline for licenses included in for instance header files. This patch adds support for line numbers to NO_GENERIC_LICENSE, too. (From OE-Core rev: 8e7ee19fc9e74cf042880f4bc317782482ba6f66) Signed-off-by: Denis Osterland-Heim <denis.osterland@diehl.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Ross Burton <ross.burton@arm.com>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/create-spdx-2.2.bbclass10
1 files changed, 8 insertions, 2 deletions
diff --git a/meta/classes/create-spdx-2.2.bbclass b/meta/classes/create-spdx-2.2.bbclass
index 27242ecf70..494bde117f 100644
--- a/meta/classes/create-spdx-2.2.bbclass
+++ b/meta/classes/create-spdx-2.2.bbclass
@@ -75,11 +75,17 @@ def convert_license_to_spdx(lic, license_data, document, d, existing={}):
75 pass 75 pass
76 if extracted_info.extractedText is None: 76 if extracted_info.extractedText is None:
77 # If it's not SPDX or PD, then NO_GENERIC_LICENSE must be set 77 # If it's not SPDX or PD, then NO_GENERIC_LICENSE must be set
78 filename = d.getVarFlag('NO_GENERIC_LICENSE', name) 78 entry = d.getVarFlag('NO_GENERIC_LICENSE', name).split(';')
79 filename = entry[0]
80 params = {i.split('=')[0]: i.split('=')[1] for i in entry[1:] if '=' in i}
81 beginline = int(params.get('beginline', 1))
82 endline = params.get('endline', None)
83 if endline:
84 endline = int(endline)
79 if filename: 85 if filename:
80 filename = d.expand("${S}/" + filename) 86 filename = d.expand("${S}/" + filename)
81 with open(filename, errors="replace") as f: 87 with open(filename, errors="replace") as f:
82 extracted_info.extractedText = f.read() 88 extracted_info.extractedText = "".join(line for idx, line in enumerate(f, 1) if beginline <= idx and idx <= (endline or idx))
83 else: 89 else:
84 bb.fatal("Cannot find any text for license %s" % name) 90 bb.fatal("Cannot find any text for license %s" % name)
85 91