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 <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2025-06-23 15:23:51 +01:00
parent 0d201a6fd7
commit 838d7a5013

View File

@ -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'))}"