From: Quirin Gylstorff BB_BASEHASH only includes the task itself and its metadata. Dependencies are not taken into account when this hash is generated which means updating a package will not generate a new UUID. BB_TASKHASH takes the changes into account. Signed-off-by: Quirin Gylstorff --- classes/image_uuid.bbclass | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/classes/image_uuid.bbclass b/classes/image_uuid.bbclass index d5337b8..873abc5 100644 --- a/classes/image_uuid.bbclass +++ b/classes/image_uuid.bbclass @@ -9,23 +9,23 @@ # SPDX-License-Identifier: MIT # -def generate_image_uuid(d): - import uuid +IMAGE_UUID ?= "random" - base_hash = d.getVar("BB_BASEHASH_task-do_rootfs_install", True) - if base_hash is None: - return None - return str(uuid.UUID(base_hash[:32], version=4)) - -IMAGE_UUID ?= "${@generate_image_uuid(d)}" +IMAGE_UUID_NAMESPACE = "6090f47e-b068-475c-b125-7be7c24cdd4e" do_generate_image_uuid[vardeps] += "IMAGE_UUID" do_generate_image_uuid[depends] = "buildchroot-target:do_build" +IMAGER_INSTALL += "uuid-runtime" do_generate_image_uuid() { + image_do_mounts + if [ "${IMAGE_UUID}" != "random" ]; then + IMAGE_UUID_FINAL="${IMAGE_UUID}" + else + IMAGE_UUID_FINAL="$(sudo -E chroot ${BUILDCHROOT_DIR} uuidgen -s -n "${IMAGE_UUID_NAMESPACE}" -N "${BB_TASKHASH}")" + fi sudo sed -i '/^IMAGE_UUID=.*/d' '${IMAGE_ROOTFS}/etc/os-release' - echo "IMAGE_UUID=\"${IMAGE_UUID}\"" | \ + echo "IMAGE_UUID=\"${IMAGE_UUID_FINAL}\"" | \ sudo tee -a '${IMAGE_ROOTFS}/etc/os-release' - image_do_mounts # update initramfs to add uuid sudo chroot '${IMAGE_ROOTFS}' update-initramfs -u -- 2.20.1