summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2024-08-14 05:02:01 -0700
committerSteve Sakoman <steve@sakoman.com>2024-11-09 05:53:57 -0800
commit35e6556f78078da32510974decf3d24070f6836a (patch)
treee5bd0440ff0e887da8bb152e6345ef0409c8aace
parent74d6b31f9f47e4f03f956357b3f9bf5dee09052a (diff)
downloadpoky-35e6556f78078da32510974decf3d24070f6836a.tar.gz
cve_check: Use a local copy of the database during builds
Rtaher than trying to use a sqlite database over NFS from DL_DIR, work from a local copy in STAGING DIR after fetching. (From OE-Core rev: 57de6545695ac11816d670959d9e63666de08e3d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 03596904392d257572a905a182b92c780d636744) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/classes/cve-check.bbclass7
-rw-r--r--meta/recipes-core/meta/cve-update-nvd2-native.bb18
2 files changed, 17 insertions, 8 deletions
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index d287cf1457..ed219bf472 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -31,8 +31,9 @@
31CVE_PRODUCT ??= "${BPN}" 31CVE_PRODUCT ??= "${BPN}"
32CVE_VERSION ??= "${PV}" 32CVE_VERSION ??= "${PV}"
33 33
34CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK" 34CVE_CHECK_DB_FILENAME ?= "nvdcve_2-2.db"
35CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_2-2.db" 35CVE_CHECK_DB_DIR ?= "${STAGING_DIR}/CVE_CHECK"
36CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/${CVE_CHECK_DB_FILENAME}"
36CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock" 37CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock"
37 38
38CVE_CHECK_LOG ?= "${T}/cve.log" 39CVE_CHECK_LOG ?= "${T}/cve.log"
@@ -198,7 +199,7 @@ python do_cve_check () {
198} 199}
199 200
200addtask cve_check before do_build 201addtask cve_check before do_build
201do_cve_check[depends] = "cve-update-nvd2-native:do_fetch" 202do_cve_check[depends] = "cve-update-nvd2-native:do_unpack"
202do_cve_check[nostamp] = "1" 203do_cve_check[nostamp] = "1"
203 204
204python cve_check_cleanup () { 205python cve_check_cleanup () {
diff --git a/meta/recipes-core/meta/cve-update-nvd2-native.bb b/meta/recipes-core/meta/cve-update-nvd2-native.bb
index 92177712dc..5fbe9095cc 100644
--- a/meta/recipes-core/meta/cve-update-nvd2-native.bb
+++ b/meta/recipes-core/meta/cve-update-nvd2-native.bb
@@ -8,7 +8,6 @@ INHIBIT_DEFAULT_DEPS = "1"
8 8
9inherit native 9inherit native
10 10
11deltask do_unpack
12deltask do_patch 11deltask do_patch
13deltask do_configure 12deltask do_configure
14deltask do_compile 13deltask do_compile
@@ -35,7 +34,9 @@ CVE_DB_INCR_UPDATE_AGE_THRES ?= "10368000"
35# Number of attempts for each http query to nvd server before giving up 34# Number of attempts for each http query to nvd server before giving up
36CVE_DB_UPDATE_ATTEMPTS ?= "5" 35CVE_DB_UPDATE_ATTEMPTS ?= "5"
37 36
38CVE_DB_TEMP_FILE ?= "${CVE_CHECK_DB_DIR}/temp_nvdcve_2.db" 37CVE_CHECK_DB_DLDIR_FILE ?= "${DL_DIR}/CVE_CHECK/${CVE_CHECK_DB_FILENAME}"
38CVE_CHECK_DB_DLDIR_LOCK ?= "${CVE_CHECK_DB_DLDIR_FILE}.lock"
39CVE_CHECK_DB_TEMP_FILE ?= "${CVE_CHECK_DB_FILE}.tmp"
39 40
40python () { 41python () {
41 if not bb.data.inherits_class("cve-check", d): 42 if not bb.data.inherits_class("cve-check", d):
@@ -52,9 +53,9 @@ python do_fetch() {
52 53
53 bb.utils.export_proxies(d) 54 bb.utils.export_proxies(d)
54 55
55 db_file = d.getVar("CVE_CHECK_DB_FILE") 56 db_file = d.getVar("CVE_CHECK_DB_DLDIR_FILE")
56 db_dir = os.path.dirname(db_file) 57 db_dir = os.path.dirname(db_file)
57 db_tmp_file = d.getVar("CVE_DB_TEMP_FILE") 58 db_tmp_file = d.getVar("CVE_CHECK_DB_TEMP_FILE")
58 59
59 cleanup_db_download(db_file, db_tmp_file) 60 cleanup_db_download(db_file, db_tmp_file)
60 # By default let's update the whole database (since time 0) 61 # By default let's update the whole database (since time 0)
@@ -77,6 +78,7 @@ python do_fetch() {
77 pass 78 pass
78 79
79 bb.utils.mkdirhier(db_dir) 80 bb.utils.mkdirhier(db_dir)
81 bb.utils.mkdirhier(os.path.dirname(db_tmp_file))
80 if os.path.exists(db_file): 82 if os.path.exists(db_file):
81 shutil.copy2(db_file, db_tmp_file) 83 shutil.copy2(db_file, db_tmp_file)
82 84
@@ -89,10 +91,16 @@ python do_fetch() {
89 os.remove(db_tmp_file) 91 os.remove(db_tmp_file)
90} 92}
91 93
92do_fetch[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}" 94do_fetch[lockfiles] += "${CVE_CHECK_DB_DLDIR_LOCK}"
93do_fetch[file-checksums] = "" 95do_fetch[file-checksums] = ""
94do_fetch[vardeps] = "" 96do_fetch[vardeps] = ""
95 97
98python do_unpack() {
99 import shutil
100 shutil.copyfile(d.getVar("CVE_CHECK_DB_DLDIR_FILE"), d.getVar("CVE_CHECK_DB_FILE"))
101}
102do_unpack[lockfiles] += "${CVE_CHECK_DB_DLDIR_LOCK} ${CVE_CHECK_DB_FILE_LOCK}"
103
96def cleanup_db_download(db_file, db_tmp_file): 104def cleanup_db_download(db_file, db_tmp_file):
97 """ 105 """
98 Cleanup the download space from possible failed downloads 106 Cleanup the download space from possible failed downloads