From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7202184025122799616 X-Received: by 2002:ac2:4c2e:0:b0:4dd:a025:d8c with SMTP id u14-20020ac24c2e000000b004dda0250d8cmr2920433lfq.5.1678082808208; Sun, 05 Mar 2023 22:06:48 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:3ca4:b0:4db:51a5:d2e8 with SMTP id h36-20020a0565123ca400b004db51a5d2e8ls466101lfv.2.-pod-prod-gmail; Sun, 05 Mar 2023 22:06:46 -0800 (PST) X-Google-Smtp-Source: AK7set9KToSsS704eVjqYfaLvFRQUceSoxQevwyWHRqWeThN0Y3i8GpvqThuOLkDnzTooI7UGcxa X-Received: by 2002:ac2:50c9:0:b0:4a4:68b7:d64b with SMTP id h9-20020ac250c9000000b004a468b7d64bmr2480205lfm.50.1678082806506; Sun, 05 Mar 2023 22:06:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678082806; cv=none; d=google.com; s=arc-20160816; b=MYT3DrFKPmtwz1lCzXKjytzTOi5sZxUPBFrjECEjDuPh3uwlpTj+zcoy8IyvZBJI/p bHkCt0moCDz0mF9pADEZlAzaq7JvGzhu0TbczRPCNzsQBEY+bfQcySnw3kDTxCu8O9ku Hw71aOF6wbK3qOcFvTiS49z7blMDBRVvE6EJXrhDC29Sj6HzDGuK60M/IyYozKG59zjt AHF27HO+F+/USehgTUGKgAArmPyr31PqTpftd/jialyByNZ20XXtA1p6orCEm4x8Q7N4 3+FsfCNMu2WrOMrM/nGhlTmSRhYdtd3Q4Kx8uGf2C/I6bzT9F1iUpthlPQvOQ3b9+PEV F8Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from; bh=nIHQNxHFgz3UnDT5QPm+Vdh3KwxjDZd8Z+3iplmDdKU=; b=0MHREf6t3oJKRRLeeo6fKzz4JxblFFKZ3zRHb+Ot/bArJ8CwB9QhTrt6lJItKimIpA 1nwiX2DsPEqDUEI/sNC0a7sAYtkZ+x6Ayq4pKbVZSyTd6WkEqxRfqeluL1Z0kD+5EopI fYlTx/+VU5x0Z3J82wiXSs0HFqxHDeFGuoMbRgh3pOD+NoAusiatysVeCD3rnI6n1M52 eTcAwCzNx0KCioevl/oxSsvEObcWFMgsIXyY7dALB5ogxvRWzMdKzn43nQTJmHNRCBYM iGZ2Sziybl4/FOUC3i/xX5G2yk0C6uFRnxRXBAYv3bVB+ZWAFjAPbBcNZkeSlnUJqkcm e2xg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id c5-20020a056512238500b004d5786b729esi414279lfv.9.2023.03.05.22.06.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 05 Mar 2023 22:06:46 -0800 (PST) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from home.localnet (44-208-124-178-static.mgts.by [178.124.208.44] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 32666jUj014278 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 6 Mar 2023 07:06:45 +0100 From: Uladzimir Bely To: isar-users@googlegroups.com Subject: Re: [PATCH] add support for rebuilding essential packages Date: Mon, 06 Mar 2023 09:06:48 +0300 Message-ID: <2449785.XAFRqVoOGU@home> In-Reply-To: <20230220103214.2704911-1-adriaan.schmidt@siemens.com> References: <20230220103214.2704911-1-adriaan.schmidt@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: WkSU9m7j+2UK In the email from Monday, 20 February 2023 13:32:14 +03 user Adriaan Schmidt wrote: > 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" > Applied (with removing redundant expand=True) to next, thanks.