From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7026299916861308928 X-Received: by 2002:a5d:4143:: with SMTP id c3mr35839473wrq.254.1635937932064; Wed, 03 Nov 2021 04:12:12 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:ed0e:: with SMTP id l14ls786664wmh.0.gmail; Wed, 03 Nov 2021 04:12:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwah4K/di9yE5EkXIFRRDYACSCGqXiNAZa14A6xZwanrH7vd7NhC4pm9LGE8CrJFx1IiPp6 X-Received: by 2002:a7b:c04b:: with SMTP id u11mr14295874wmc.127.1635937931103; Wed, 03 Nov 2021 04:12:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635937931; cv=none; d=google.com; s=arc-20160816; b=wMYctMtO60eo75Tb4IrE/RU73arbXsLkQOnsh5/j7MgGUqKR4i0L6QWnJbNmSTS1QB oWSfxHMzS6+2a6kElGPNd7AHaXDz+1Lw2waRp522o1AI91j2ISOtMmHDj+tGQ3tEy2Tb QN/IpO2qCQmmOGr1tMdPg0E3CN8y2G+dNUb+uDOI558WhMHwQhjhFRk4bRDOuoeBL6Aw 9Za5k6qIToD0rf3eOOuYorJhojEYKWkdTRw40H8LA+4HK2h6TO6k692+Xp19EdWkPnm1 Q+yy/c08qAplwZZzViCImG7lwZdgh9RXVlGhZa4TAj2aSpPanVHHrOb0xAb3KLRVyGpk aaAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=rOVpU4L/GE+Y+a2UqF7lCMSy18dR5HJ/pHGfrcU2k28=; b=RajTUtQvzmKgWAsUaj8s5XZ9gbfRojMydY6okLc5S3je8NOnt1xlgBzU/2Sdrwum2a 4ePrkINxJzC5ptp+cSZnuTTzixuwqI/7NHFLaPMcAuXAIe2OEoHHbnLbXqZqZnOC0DUI lvMKEMXmjDrotwmOoMNUz4iEdUziGv4dMs6FZnTVluUkDwgtnWbNk2eLs5KGYEbuSm9y pH6qgrHC/FuCW8ScamTPTXSB12I4+4kExPmcn9VzQKvCiwNPVSYrZEHvQAOmZ+ZBsXsO BZujmpHsaYQGZjJqskQ692jONRDQMJRq3BJ0znOlCFxN6AaB6SSRtEkCUw2l8bzo58tN zR2Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from lizzard.sbs.de (lizzard.sbs.de. [194.138.37.39]) by gmr-mx.google.com with ESMTPS id j15si190500wmq.2.2021.11.03.04.12.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Nov 2021 04:12:11 -0700 (PDT) Received-SPF: pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) client-ip=194.138.37.39; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by lizzard.sbs.de (8.15.2/8.15.2) with ESMTPS id 1A3BCAtW011604 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 3 Nov 2021 12:12:10 +0100 Received: from MD1T0KAC-VM.ad001.siemens.net (md1t0kac.ad001.siemens.net [139.25.68.224]) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id 1A3BCABo007310; Wed, 3 Nov 2021 12:12:10 +0100 From: Felix Moessbauer To: isar-users@googlegroups.com Cc: henning.schild@siemens.com, adriaan.schmidt@siemens.com, Felix Moessbauer Subject: [PATCH v1 1/1] always invoke ISAR_RELEASE_CMD to invalidate downstream tasks on change Date: Wed, 3 Nov 2021 12:11:55 +0100 Message-Id: <20211103111155.2935045-1-felix.moessbauer@siemens.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: okOlymOKhSTO The command in ISAR_RELEASE_CMD is used to add version information of the image under /etc/os-release. As we cannot predict the output of the command, we cannot cache it. Prior to this patch, this situation was just accepted resulting in misleading build-ids on incremental builds. When caching artifacts across builds (e.g. using sstate), this also affects fresh builds. The patch ensures that ISAR_RELEASE_CMD is always invoked and the output is stored in the variable IMAGE_BUILD_ID. This variable is added as a vardep in the rootfs_postprocess task, so changes invalidate all downstream tasks. By that, we ensure that images always contain correct release information. Signed-off-by: Felix Moessbauer --- meta/classes/image-postproc-extension.bbclass | 4 ++-- meta/classes/image.bbclass | 19 +++++++++++++++++++ meta/classes/rootfs.bbclass | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/meta/classes/image-postproc-extension.bbclass b/meta/classes/image-postproc-extension.bbclass index 3f00c21..6e6b257 100644 --- a/meta/classes/image-postproc-extension.bbclass +++ b/meta/classes/image-postproc-extension.bbclass @@ -46,11 +46,11 @@ image_postprocess_configure() { } ROOTFS_POSTPROCESS_COMMAND =+ "image_postprocess_mark" +ROOTFS_POSTPROCESS_VARDEPS =+ "IMAGE_BUILD_ID" image_postprocess_mark() { - BUILD_ID=$(get_build_id) update_etc_os_release \ - --build-id "${BUILD_ID}" --variant "${DESCRIPTION}" --version "${PV}" + --build-id "${IMAGE_BUILD_ID}" --variant "${DESCRIPTION}" --version "${PV}" } ROOTFS_POSTPROCESS_COMMAND =+ "image_postprocess_machine_id" diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 5a0f32e..efb5825 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -109,6 +109,25 @@ get_build_id() { fi } +# the IMAGE_BUILD_ID depends on external conditions injected via +# ISAR_RELEASE_CMD. By that, we have to compute the value +# on each invocation +python() { + bblayers = d.getVar('BBLAYERS', True) + release_cmd = d.getVar('ISAR_RELEASE_CMD', True) + if len(bblayers.split()) != 2: + if release_cmd == d.getVar('ISAR_RELEASE_CMD_DEFAULT', True): + bb.warn('You are using external layers that will not be' + 'considered in the build_id. Consider changing' + 'ISAR_RELEASE_CMD.') + try: + out,err = bb.process.run(release_cmd) + d.setVar('IMAGE_BUILD_ID', out) + except(bb.process.ExecutionError): + bb.warn(f'"{release_cmd}" failed, returning empty build_id.') + d.setVar('IMAGE_BUILD_ID', '') +} + python set_image_size () { rootfs_size = get_rootfs_size(d) d.setVar('ROOTFS_SIZE', str(rootfs_size)) diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 20ccb00..e8c7fa0 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -239,7 +239,7 @@ rootfs_export_dpkg_status() { '${ROOTFS_DPKGSTATUS_DEPLOY_DIR}'/'${PF}'.dpkg_status } -do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" +do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND} ${ROOTFS_POSTPROCESS_VARDEPS}" python do_rootfs_postprocess() { # Take care that its correctly mounted: bb.build.exec_func('rootfs_do_mounts', d) -- 2.30.2