From 838d7a5013136a4e056330b4a9f74c130340d084 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 23 Jun 2025 15:23:51 +0100 Subject: [PATCH] image_types_wic: Fix file-checksums for missing files in search path When we tell bitbake about file-checksums, we need to tell it both the files we look at that exist, but also the ones we looked for but aren't present. This means that if files appear earlier in the search path, bitbake can then do the correct things like updating the taskhash and re-running the recipe/task. In this case, wic was only signalling file presence. This patch adds in the files it looked at but didn't find too. (From OE-Core rev: ef96e2efcd95785e29ff7c62b2cb76e26f46f5ec) Signed-off-by: Richard Purdie --- meta/classes-recipe/image_types_wic.bbclass | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/image_types_wic.bbclass b/meta/classes-recipe/image_types_wic.bbclass index 740ed946f8..6180874a4c 100644 --- a/meta/classes-recipe/image_types_wic.bbclass +++ b/meta/classes-recipe/image_types_wic.bbclass @@ -57,6 +57,16 @@ def wks_search(files, search_path): if searched: return searched +def wks_checksums(files, search_path): + ret = "" + for f in files: + found, hist = bb.utils.which(search_path, f, history=True) + ret = ret + " " + " ".join(h + ":False" for h in hist[:-1]) + if found: + ret = ret + " " + found + ":True" + return ret + + WIC_CREATE_EXTRA_ARGS ?= "" IMAGE_CMD:wic () { @@ -98,7 +108,7 @@ do_image_wic[cleandirs] = "${WORKDIR}/build-wic" # Rebuild when the wks file or vars in WICVARS change USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}" -WKS_FILE_CHECKSUM = "${@'${WKS_FULL_PATH}:%s' % os.path.exists('${WKS_FULL_PATH}') if '${USING_WIC}' else ''}" +WKS_FILE_CHECKSUM = "${@wks_checksums(d.getVar('WKS_FILES').split(), d.getVar('WKS_SEARCH_PATH')) if '${USING_WIC}' else ''}" do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}" do_image_wic[depends] += "${@' '.join('%s-native:do_populate_sysroot' % r for r in ('parted', 'gptfdisk', 'dosfstools', 'mtools'))}"