summaryrefslogtreecommitdiffstats
path: root/meta/classes/cve-check.bbclass
diff options
context:
space:
mode:
authorMarta Rybczynska <rybczynska@gmail.com>2022-05-17 08:01:15 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-05-17 09:14:26 +0100
commit6b7b91fa34cd47941d5cbd89be441e6e293d67a4 (patch)
treeca2f59117b8b2442c6a276ca85f5d5f1a5bc8075 /meta/classes/cve-check.bbclass
parent0dc16dcfff14ac5cbe672c5539ce1c0ac5b9d5c9 (diff)
downloadpoky-6b7b91fa34cd47941d5cbd89be441e6e293d67a4.tar.gz
cve-check: Fix report generation
The addition of summary output caused two issues: error when building an image and the fact that JSON output was generated even when CVE_CHECK_FORMAT_JSON. When generating an image it caused an error like: ERROR: core-image-minimal-1.0-r0 do_rootfs: Error executing a python function in exec_func_python() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_func_python() autogenerated', lineno: 2, function: <module> 0001: *** 0002:cve_check_write_rootfs_manifest(d) 0003: File: '/home/alexk/poky/meta/classes/cve-check.bbclass', lineno: 213, function: cve_check_write_rootfs_manifest 0209: 0210: link_path = os.path.join(deploy_dir, "%s.json" % link_name) 0211: manifest_path = d.getVar("CVE_CHECK_MANIFEST_JSON") 0212: bb.note("Generating JSON CVE manifest") *** 0213: generate_json_report(json_summary_name, json_summary_link_name) 0214: bb.plain("Image CVE JSON report stored in: %s" % link_path) 0215:} 0216: 0217:ROOTFS_POSTPROCESS_COMMAND:prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}" Exception: NameError: name 'json_summary_name' is not defined The fix is to pass the d variable to the pure python function generate_json_report to get correct values of variables and add conditions for the JSON output where needed. In addition clarify the message presenting the summary JSON file, which isn't related to an image. Uses partial fixes from Alex Kiernan, Ernst Sjöstrand (ernstp), and Davide Gardenal. Fixes: f2987891d315 ("cve-check: add JSON format to summary output") (From OE-Core rev: 9015dec93233c7d45fd0c9885ff5d4ec23ad377d) Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/cve-check.bbclass')
-rw-r--r--meta/classes/cve-check.bbclass18
1 files changed, 10 insertions, 8 deletions
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index 24ddb865ea..7cd98ae462 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -79,7 +79,7 @@ CVE_CHECK_LAYER_INCLUDELIST ??= ""
79# set to "alphabetical" for version using single alphabetical character as increment release 79# set to "alphabetical" for version using single alphabetical character as increment release
80CVE_VERSION_SUFFIX ??= "" 80CVE_VERSION_SUFFIX ??= ""
81 81
82def generate_json_report(out_path, link_path): 82def generate_json_report(d, out_path, link_path):
83 if os.path.exists(d.getVar("CVE_CHECK_SUMMARY_INDEX_PATH")): 83 if os.path.exists(d.getVar("CVE_CHECK_SUMMARY_INDEX_PATH")):
84 import json 84 import json
85 from oe.cve_check import cve_check_merge_jsons 85 from oe.cve_check import cve_check_merge_jsons
@@ -127,10 +127,11 @@ python cve_save_summary_handler () {
127 os.remove(cvefile_link) 127 os.remove(cvefile_link)
128 os.symlink(os.path.basename(cve_summary_file), cvefile_link) 128 os.symlink(os.path.basename(cve_summary_file), cvefile_link)
129 129
130 if d.getVar("CVE_CHECK_FORMAT_JSON") == "1":
130 json_summary_link_name = os.path.join(cvelogpath, d.getVar("CVE_CHECK_SUMMARY_FILE_NAME_JSON")) 131 json_summary_link_name = os.path.join(cvelogpath, d.getVar("CVE_CHECK_SUMMARY_FILE_NAME_JSON"))
131 json_summary_name = os.path.join(cvelogpath, "%s-%s.json" % (cve_summary_name, timestamp)) 132 json_summary_name = os.path.join(cvelogpath, "%s-%s.json" % (cve_summary_name, timestamp))
132 generate_json_report(json_summary_name, json_summary_link_name) 133 generate_json_report(d, json_summary_name, json_summary_link_name)
133 bb.plain("CVE report summary created at: %s" % json_summary_link_name) 134 bb.plain("Complete CVE JSON report summary created at: %s" % json_summary_link_name)
134} 135}
135 136
136addhandler cve_save_summary_handler 137addhandler cve_save_summary_handler
@@ -207,11 +208,12 @@ python cve_check_write_rootfs_manifest () {
207 os.symlink(os.path.basename(manifest_name), manifest_link) 208 os.symlink(os.path.basename(manifest_name), manifest_link)
208 bb.plain("Image CVE report stored in: %s" % manifest_name) 209 bb.plain("Image CVE report stored in: %s" % manifest_name)
209 210
210 link_path = os.path.join(deploy_dir, "%s.json" % link_name) 211 if d.getVar("CVE_CHECK_FORMAT_JSON") == "1":
211 manifest_path = d.getVar("CVE_CHECK_MANIFEST_JSON") 212 link_path = os.path.join(deploy_dir, "%s.json" % link_name)
212 bb.note("Generating JSON CVE manifest") 213 manifest_path = d.getVar("CVE_CHECK_MANIFEST_JSON")
213 generate_json_report(json_summary_name, json_summary_link_name) 214 bb.note("Generating JSON CVE manifest")
214 bb.plain("Image CVE JSON report stored in: %s" % link_path) 215 generate_json_report(d, manifest_path, link_path)
216 bb.plain("Image CVE JSON report stored in: %s" % link_path)
215} 217}
216 218
217ROOTFS_POSTPROCESS_COMMAND:prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}" 219ROOTFS_POSTPROCESS_COMMAND:prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}"