From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7202184025122799616 X-Received: by 2002:a5d:5091:0:b0:2c3:ed84:af80 with SMTP id a17-20020a5d5091000000b002c3ed84af80mr36741wrt.471.1676889142432; Mon, 20 Feb 2023 02:32:22 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:1e0e:b0:3cf:72dc:df8 with SMTP id ay14-20020a05600c1e0e00b003cf72dc0df8ls353898wmb.0.-pod-canary-gmail; Mon, 20 Feb 2023 02:32:20 -0800 (PST) X-Google-Smtp-Source: AK7set+EPXSCCrBix/aSUGI0VgegG6UFxv9BiChTeDU8Kf1yrvaEgjB1IjPDQVtPWqhcmFhk8bDd X-Received: by 2002:a05:600c:3298:b0:3dc:5674:66e6 with SMTP id t24-20020a05600c329800b003dc567466e6mr33870wmp.25.1676889140910; Mon, 20 Feb 2023 02:32:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676889140; cv=none; d=google.com; s=arc-20160816; b=LgpeuBPag3JLDZgVuhBqKBGA4r6da8JkrVKq6DQlO7pkfGRt15x6c175TqLd3BFoUN I6V/OR0dBBVN/Ll7ZdSa3UGNvezr3lSwjoMrepEsur1AQ9iPySxQgv+ipEqxfcKg0/E5 o5UHjSdUDmIDs4koFadInRDTkp5AKtvnZYyv2aGolGgy8Opfvl79p5UGLq8ieojpQHso GiXDeEv/x+oQIWOvs9lUzrQoBdZKYHR97RP+bC5B62i52ft+yye5mH5kZw6gxhCcptFd BVAfoR/SNx4w4VxYza/5uApU54KE/DJ3D0/zNwz8tPVcc7fYUmzu0zFvtOmFLafvODrh uA3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:message-id:date :subject:cc:to:from:dkim-signature; bh=/KrHuvL9Q1kbo5W05gt1AXsJPvVkuG9ohfNMfBTDE90=; b=0wPTz7UzH/LPbNx5vzYZX0M5sUBIE+Qf91rS+pXENskhUG+eDceb4uhAgcymK+DtET 3f64SuiJp65kvIcBa+lX92rH5rOxBWvLAosvqJxj9m1hp2kHAgMJxxEEh8BJIfJkpARk RhrXxTlRMEf7Tk9BB4g4ZCCNw34auuOkxK9tANje4Jm4hSfGJu8DgTEJ47cZUMBXb6Gy ++yt56KrJlInCnFBhaCqCoIUVIOd1yeLxU2f+ne854YpxZJQnrIIJA5yB5xE7Fp7PlPR uNch5q19mZQETlqxrWzAjR6JgFR92de9M/BKy52Lx6OSVcyPAP9pR1pHpQdNu0Is26g4 GLLg== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=c5ugebbc; spf=pass (google.com: domain of fm-526363-20230220103220b141042ad093755331-h0vrtz@rts-flowmailer.siemens.com designates 185.136.64.228 as permitted sender) smtp.mailfrom=fm-526363-20230220103220b141042ad093755331-H0VrtZ@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from mta-64-228.siemens.flowmailer.net (mta-64-228.siemens.flowmailer.net. [185.136.64.228]) by gmr-mx.google.com with ESMTPS id az22-20020a05600c601600b003db110e1928si22721wmb.1.2023.02.20.02.32.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Feb 2023 02:32:20 -0800 (PST) Received-SPF: pass (google.com: domain of fm-526363-20230220103220b141042ad093755331-h0vrtz@rts-flowmailer.siemens.com designates 185.136.64.228 as permitted sender) client-ip=185.136.64.228; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=c5ugebbc; spf=pass (google.com: domain of fm-526363-20230220103220b141042ad093755331-h0vrtz@rts-flowmailer.siemens.com designates 185.136.64.228 as permitted sender) smtp.mailfrom=fm-526363-20230220103220b141042ad093755331-H0VrtZ@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: by mta-64-228.siemens.flowmailer.net with ESMTPSA id 20230220103220b141042ad093755331 for ; Mon, 20 Feb 2023 11:32:20 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=adriaan.schmidt@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=/KrHuvL9Q1kbo5W05gt1AXsJPvVkuG9ohfNMfBTDE90=; b=c5ugebbcVH+UlokYwHMsHZs2Ke351z9UHj4sPyBVRicLAibBJKn++Zrzd3kXv2FLlXW8k3 vC1opw5bbUg9czWVFqBOQIIx82vU8Q+X4CY+W4k9svK2wrE5QyCeZJUspVWV7FjBMzpgKLjh PpBr8TjQlW1DvyBd2S6NBp0/rsW/E=; From: Adriaan Schmidt To: isar-users@googlegroups.com Cc: Adriaan Schmidt Subject: [PATCH] add support for rebuilding essential packages Date: Mon, 20 Feb 2023 11:32:14 +0100 Message-Id: <20230220103214.2704911-1-adriaan.schmidt@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-526363:519-21489:flowmailer X-TUID: Ze7lsHr8K7My There are cases when we need to rebuild a package that is installed during bootstrap (we call those "essential package" here). This patch introduces `ISAR_REBUILD_ESSENTIAL_PKGS` which can be set in (distro/layer) config, and lists all essential packages. During build, Isar ensures that essential packages are built before any others, so that their locally built versions are available in isar-apt, and will be used in any subsequent package builds. Signed-off-by: Adriaan Schmidt --- This has interdependencies with the proposed multiarch feature, and builds on v2 of that series. Adriaan --- meta/classes/dpkg-base.bbclass | 1 + meta/classes/essential.bbclass | 39 ++++++++++++++++++++++++++++++++++ meta/classes/image.bbclass | 1 + 3 files changed, 41 insertions(+) create mode 100644 meta/classes/essential.bbclass diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 55cc6655..ce301346 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -10,6 +10,7 @@ inherit debianize inherit terminal inherit repository inherit deb-dl-dir +inherit essential DEPENDS ?= "" RPROVIDES ?= "${PROVIDES}" diff --git a/meta/classes/essential.bbclass b/meta/classes/essential.bbclass new file mode 100644 index 00000000..cb444674 --- /dev/null +++ b/meta/classes/essential.bbclass @@ -0,0 +1,39 @@ +# This software is a part of ISAR. +# Copyright (C) 2023 Siemens AG + +ISAR_REBUILD_ESSENTIAL_PKGS ?= "" + +python() { + isar_rebuild_essential_pkgs = (d.getVar('ISAR_REBUILD_ESSENTIAL_PKGS', True) or '').split() + build_compat = d.getVar('ISAR_ENABLE_COMPAT_ARCH', True) == "1" + build_native = not d.getVar('DISTRO_ARCH', True) == d.getVar('HOST_ARCH') + + # construct list of essential packages that should be rebuilt: + # if we can't build compat, don't include any -compat packages + # if we don't need native (because DISTRO_ARCH == HOST_ARCH), don't build native + # otherwise, automatically include compat/native when we can build them + essential_packages = [] + for p in isar_rebuild_essential_pkgs: + if p.endswith('-compat') and build_compat: + essential_packages.append(p) + elif p.endswith('-native') and build_native: + essential_packages.append(p) + else: + essential_packages.append(p) + if build_compat: + essential_packages.append(f'{p}-compat') + if build_native: + essential_packages.append(f'{p}-native') + + # bail out if this recipe is in the essential list + if d.getVar('PN') in essential_packages: + return + + # add dependencies to all packages from the essential list + for p in essential_packages: + if d.getVar('do_prepare_build'): + d.appendVarFlag('do_prepare_build', 'depends', f' {p}:do_deploy_deb') + if d.getVar('do_install_rootfs'): + d.appendVarFlag('do_install_rootfs', 'depends', f' {p}:do_deploy_deb') +} + diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index ce7c549c..550785ea 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -80,6 +80,7 @@ image_do_mounts() { } inherit multiarch +inherit essential ROOTFSDIR = "${IMAGE_ROOTFS}" ROOTFS_FEATURES += "clean-package-cache clean-pycache generate-manifest export-dpkg-status clean-log-files clean-debconf-cache" -- 2.30.2