summaryrefslogtreecommitdiffstats
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-24 15:48:37 +0100
commit232b5533de22bba7a747f73f684d609e217531f9 (patch)
treef0a67fbfbe99ef39dc47ed581493d00b08a6abaa
parentb4e5bf3e7f6b535a1dbbc2dc76f9218333f2947e (diff)
downloadpoky-232b5533de22bba7a747f73f684d609e217531f9.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: 665f981fccbb09d51349c4bd4cfe4ca91001e3bd) Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 9015dec93233c7d45fd0c9885ff5d4ec23ad377d) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-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 ac9f0fb22c..34c38bdf2d 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -75,7 +75,7 @@ CVE_CHECK_LAYER_INCLUDELIST ??= ""
75# set to "alphabetical" for version using single alphabetical character as increment release 75# set to "alphabetical" for version using single alphabetical character as increment release
76CVE_VERSION_SUFFIX ??= "" 76CVE_VERSION_SUFFIX ??= ""
77 77
78def generate_json_report(out_path, link_path): 78def generate_json_report(d, out_path, link_path):
79 if os.path.exists(d.getVar("CVE_CHECK_SUMMARY_INDEX_PATH")): 79 if os.path.exists(d.getVar("CVE_CHECK_SUMMARY_INDEX_PATH")):
80 import json 80 import json
81 from oe.cve_check import cve_check_merge_jsons 81 from oe.cve_check import cve_check_merge_jsons
@@ -123,10 +123,11 @@ python cve_save_summary_handler () {
123 os.remove(cvefile_link) 123 os.remove(cvefile_link)
124 os.symlink(os.path.basename(cve_summary_file), cvefile_link) 124 os.symlink(os.path.basename(cve_summary_file), cvefile_link)
125 125
126 if d.getVar("CVE_CHECK_FORMAT_JSON") == "1":
126 json_summary_link_name = os.path.join(cvelogpath, d.getVar("CVE_CHECK_SUMMARY_FILE_NAME_JSON")) 127 json_summary_link_name = os.path.join(cvelogpath, d.getVar("CVE_CHECK_SUMMARY_FILE_NAME_JSON"))
127 json_summary_name = os.path.join(cvelogpath, "%s-%s.json" % (cve_summary_name, timestamp)) 128 json_summary_name = os.path.join(cvelogpath, "%s-%s.json" % (cve_summary_name, timestamp))
128 generate_json_report(json_summary_name, json_summary_link_name) 129 generate_json_report(d, json_summary_name, json_summary_link_name)
129 bb.plain("CVE report summary created at: %s" % json_summary_link_name) 130 bb.plain("Complete CVE JSON report summary created at: %s" % json_summary_link_name)
130} 131}
131 132
132addhandler cve_save_summary_handler 133addhandler cve_save_summary_handler
@@ -202,11 +203,12 @@ python cve_check_write_rootfs_manifest () {
202 os.symlink(os.path.basename(manifest_name), manifest_link) 203 os.symlink(os.path.basename(manifest_name), manifest_link)
203 bb.plain("Image CVE report stored in: %s" % manifest_name) 204 bb.plain("Image CVE report stored in: %s" % manifest_name)
204 205
205 link_path = os.path.join(deploy_dir, "%s.json" % link_name) 206 if d.getVar("CVE_CHECK_FORMAT_JSON") == "1":
206 manifest_path = d.getVar("CVE_CHECK_MANIFEST_JSON") 207 link_path = os.path.join(deploy_dir, "%s.json" % link_name)
207 bb.note("Generating JSON CVE manifest") 208 manifest_path = d.getVar("CVE_CHECK_MANIFEST_JSON")
208 generate_json_report(json_summary_name, json_summary_link_name) 209 bb.note("Generating JSON CVE manifest")
209 bb.plain("Image CVE JSON report stored in: %s" % link_path) 210 generate_json_report(d, manifest_path, link_path)
211 bb.plain("Image CVE JSON report stored in: %s" % link_path)
210} 212}
211 213
212ROOTFS_POSTPROCESS_COMMAND_prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}" 214ROOTFS_POSTPROCESS_COMMAND_prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}"