From patchwork Sun Nov 2 19:01:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cedric Hombourger X-Patchwork-Id: 4481 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Sun, 02 Nov 2025 20:01:44 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f63.google.com (mail-wm1-f63.google.com [209.85.128.63]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 5A2J1hKH028022 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 2 Nov 2025 20:01:44 +0100 Received: by mail-wm1-f63.google.com with SMTP id 5b1f17b1804b1-477124f7c00sf19778145e9.1 for ; Sun, 02 Nov 2025 11:01:44 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1762110098; cv=pass; d=google.com; s=arc-20240605; b=L5P910uD2kwsJ0P/H+XCjFPvmJICpKOagGn0Xcby4q1AI83W0kyjDs21Wm/faAzJHu HVjPd76+J4a9SOviQBo79SBAHfEtoXIs4cuRKGKlHZktnxlyVz1IiePXdzR761XzQJ0J P3DRk3niXKFOA4sM6k3LLEv7K/5kmbCqDrKX8ggFv1IPsGWbTifcJIp1Xx1mwg8Jwp9E UXViK8drNQUvTSlZCx2WL46DqjdCThhoANRzDkDFIYQV49QyKiuKTLpg4K52llxnDwiY yefx9HImIdBbXpirxBwcV8lkOy8c2L5SfLqYbqQ+yaTU1EBvIaM/K4IFB7VRBsVowJMu VkVw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=V5habGqKunyJkwqFiMmFoOel2dfreMOg0FX0GxbddQE=; fh=EjXhNFexd3hlBXjOiPp9ElWLZGbYVxaQakDm2/dFyHo=; b=EaIc0EFjQgPThBSqSKqjuJSZBQJdGj1HjvlmGbCqREaHgc16nzB9zLV6poR75WWMfg E9sIJw0licjfIBOm95NGqYpuJMqbXKjVI8i2kwooBI56SvNIaRtXZIozcEgbhmTREsYw FXCO59QtYPOIEgDISbTWgcUbUS00rUtn9fTh9y3oBu7LsucN65ihiS5nW9gbX/ruhep2 gdkkVE6sr6UmqOF6gMQSJhH80ujNPBklvsUfh2aBpMHvb0u6ElQCwTeGEFcA+LgXd3cM IRlLIJ7Nf7D8lLcSJI+AHuRWwmbo5FKfNbFrWVZNjMdrhXIK+fSYFbMaiSrWYAXJ7Jo7 q7uA==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QczdH8Zb; spf=pass (google.com: domain of fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1762110098; x=1762714898; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V5habGqKunyJkwqFiMmFoOel2dfreMOg0FX0GxbddQE=; b=I07J1dWXSDv/Rjt1MkV7m2zMQWR4szv4MibQX0uiS3+IWziNp+VeWKblGnoR79G1fV zP7sV2cqUXw8CfgdO6XGCA6lojTrWGvV4JzJkGf/HMTT+AkAnorxbFStYsvGe8nSQ8xH S4DHbyrz/EQCjXGU6ADzVlDuFBwtkOFOhlSxmnBwmDi+o0iDATFkqd0eT8I2B8PkvucI hXtUFDc3JuEe9ft9fMbPw4M28DoGlRWNT4xeYBXu5rsKap8Q3JR2mrfqPJzL0JjcfBtT D0i12YpZRBr3T7fCothhkmNkFO4ISH8dlEh+jfoZVOZd04F8Dm7fOTKDTDiOqi2514mb Vx5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762110098; x=1762714898; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=V5habGqKunyJkwqFiMmFoOel2dfreMOg0FX0GxbddQE=; b=eKGUBwPVeqUz60A8EVnZs+YQcAWEtIaLZdubIOF6MSPq0W8SW07pWD5wtv4koOp2+V 3VYXW2I3PXp0v6sQGwUwjCb+rkw8B8PC011q3QVf5IKp48ZxVeNMNzM2oHvfUXt/g3cZ YE3kxL3OHXBvNpUNPKdw5Qlx6439plt0C7FtGnlKfBIgN/LNTiS7O067IPVs525wIaC4 FOSkLMi+TO0h4N09lzCWUS0Xuv2BDurALevhL7oAK4prITGpYk/Kp1Zd1KsHYNo+P3Tr 0rZkOw0SdKige3YSyv+10tok642uuhBl0/zT7/qIm+w089vd22zPs/jqv3GeWAYIxhQn DCDw== X-Forwarded-Encrypted: i=2; AJvYcCXVoqhSDPdNuA8vw5hAZSzsoo2PLDwsAfP07BbjW8RfTpYMwjQiX2djNmD74VtGYnyDY7QCx9M=@isar-build.org X-Gm-Message-State: AOJu0Yz6Dc0PPd9Uf0tGNK1NDZ2E8rlAFwLNdxv7chn8La5lJ0oKdh7K opChZQlaFCgVa0hno5AB/jvS0Gqj7jdTjgfg06McPmvz1V7LDy3EiQu3 X-Google-Smtp-Source: AGHT+IHs6PuJ212TxrFjyJydLjSYVDv3CxhtCmeKL7Gfgqsi/2bfBQ1Aqw3f7c47odY7UtQXQl0rJw== X-Received: by 2002:a05:600c:4591:b0:46f:d897:516f with SMTP id 5b1f17b1804b1-477308b51c3mr119019425e9.34.1762110098001; Sun, 02 Nov 2025 11:01:38 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h="Ae8XA+bsXldZerZb9o1gTQD8oIkO7hRW5jyQUWWlo8fHvDEmQA==" Received: by 2002:a05:600c:1c28:b0:471:80e:c5fe with SMTP id 5b1f17b1804b1-477276e93e6ls35583865e9.0.-pod-prod-08-eu; Sun, 02 Nov 2025 11:01:34 -0800 (PST) X-Received: by 2002:a05:600c:a08:b0:46f:b43a:aef4 with SMTP id 5b1f17b1804b1-477308c9f72mr90900725e9.38.1762110094439; Sun, 02 Nov 2025 11:01:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1762110094; cv=none; d=google.com; s=arc-20240605; b=c+cNjJ8Q7ahKRWDZn4m+7NhVjDINy2Ai5DLybV/+Qqh1qtYWel7V4ZvMdLJ346/tBe CGiG+dvDGOYrIOsEKEFn/hydPPPYw/uyQBWO+SEF34G1dm1pR6QWL9C2nA5XeyXAiRj2 T++bAttYe86ujEjnRMWpNPzLTWWwYhb0IeqJlWsttV+8Hr5y4N+yAkOLktBM1nAKnB19 x2WdfwE1SlbALIIzXr0dlT5z84KH4RavaWOVGEG8+Uziif2NNTYI22ar9Efv9v3VGQyu 6IPzqsAP8IG28Bu5Yv3VpVAtZ+OIErcPYqeOOlzOp1iSNb4LCcssIcpeWDFDOT8npXqw 7KkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=pmc315FudhQ4BVJ8WIv7ixWhdkK5cpSlk6tvwF2R+to=; fh=1z37pEVhqwMLlkT4FDzOga7XBsM6Rzv6sXOq0pipxqo=; b=HF3273tz0E20rkACEjXxukznEQxjOL54BRFowSe8NlNTokKByQZ5fV32U86vsZj0kG jOPhGXZ6Umq4EKcO80urwh+dHEbrLzNrXtT+Q0HeYWN+NXwgsIHAa1nD2V2ndEOpZppg nMhx6HQ7mIS0GSko6TzSLkRuub3Zol3NVBDq9GIYKFkDPDYfn2OlacTcHWOVyXzatRyj cGQaNkQt+ccfjAsfe5JDqwLy95khUHwuPjmfHQ5Ya4IHXvxcZlO0JMo6o2oOmDbZVBVY +qnHcE3AqM5y2nDgzjTi6pLwxCNTEa007B7lC+6LzZu/CXe4rGDEbYgco2/ooWG494FF IwJg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QczdH8Zb; spf=pass (google.com: domain of fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-64-226.siemens.flowmailer.net (mta-64-226.siemens.flowmailer.net. [185.136.64.226]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-4772fbef791si3981785e9.2.2025.11.02.11.01.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 02 Nov 2025 11:01:34 -0800 (PST) Received-SPF: pass (google.com: domain of fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) client-ip=185.136.64.226; Received: by mta-64-226.siemens.flowmailer.net with ESMTPSA id 2025110219013397b245b0d9000207ea for ; Sun, 02 Nov 2025 20:01:34 +0100 X-Patchwork-Original-From: "'Cedric Hombourger' via isar-users" From: Cedric Hombourger To: isar-users@googlegroups.com Cc: Cedric Hombourger Subject: [PATCH 1/1] image: introduce IMAGE_INITRD, deprecate INITRD_IMAGE Date: Sun, 2 Nov 2025 20:01:20 +0100 Message-ID: <20251102190129.727186-2-cedric.hombourger@siemens.com> In-Reply-To: <20251102190129.727186-1-cedric.hombourger@siemens.com> References: <20251102190129.727186-1-cedric.hombourger@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1212295:519-21489:flowmailer X-Original-Sender: cedric.hombourger@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QczdH8Zb; spf=pass (google.com: domain of fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1212295-2025110219013397b245b0d9000207ea-vpwe0m@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Cedric Hombourger Reply-To: Cedric Hombourger Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= INITRD_IMAGE could be set to the full name of an initrd image to be found in DEPLOY_DIR_IMAGE. Downstream layers had to assume how Isar names its image artifacts (${DISTRO}-${IMAGE}-initrd.img suffix for initrd images) and insert the build of their initramfs recipe into the image build pipeline. IMAGE_INITRD is introduced to (1) have a constistent naming convention for variables consumed by the image class (IMAGE_ prefix) (2) only require this variable to be set when a custom initrd should be built and used by the imager. For instance, cip-core was doing the following: INITRAMFS_RECIPE ?= "cip-core-initramfs" INITRD_IMAGE = "${INITRAMFS_RECIPE}-${DISTRO}-${MACHINE}.initrd.img" do_image_wic[depends] += "${INITRAMFS_RECIPE}:do_build" And it could now be changed to: INITRD_IMAGE ?= "cip-core-initramfs" (their layer would likely keep their INITRAMFS_RECIPE variable as it may be considered as an API towards its own downstream users). INITRD_IMAGE is "only" deprecated; meaning that it may still be used (but build-time warnings will be raised). If both IMAGE_INITRD and INITRD_IMAGE are set then the latter will be ignored (a warning noting that both were set will be emitted). These changes were tested against (1) new CI test-cases and (2) CIP Core 1.9.0 both with and without adaptions to its code. Signed-off-by: Cedric Hombourger --- RECIPE-API-CHANGELOG.md | 28 +++++++++++++ doc/user_manual.md | 3 +- meta/classes/image.bbclass | 31 ++++++++++++-- testsuite/citest.py | 83 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 140 insertions(+), 5 deletions(-) diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md index cf04fa5c..78c7eae0 100644 --- a/RECIPE-API-CHANGELOG.md +++ b/RECIPE-API-CHANGELOG.md @@ -791,3 +791,31 @@ Set `Rules-Requires-Root: no` in `debian/control` files to prevent unnecessary invocation of fakeroot during package builds. This follows Debian guidelines recommending not to use fakeroot when no privileged operations (e.g., `chown`, root file modifications) are required. + +### IMAGE_INITRD added to replace INITRD_IMAGE + +INITRD_IMAGE could be set to the full name of an initrd image to be found in +DEPLOY_DIR_IMAGE. Downstream layers had to assume how Isar names its image +artifacts (presently adding a ${DISTRO}-${IMAGE}-initrd.img suffix to initrd +images) and insert the build of their initramfs recipe into the image build +pipeline. + +IMAGE_INITRD is introduced to (1) have a constistent naming convention for +variables consumed by the image class (IMAGE_ prefix) (2) only require +this variable to be set when a custom initrd should be built and used by the +imager. + +For instance, cip-core was doing the following: + + INITRAMFS_RECIPE ?= "cip-core-initramfs" + INITRD_IMAGE = "${INITRAMFS_RECIPE}-${DISTRO}-${MACHINE}.initrd.img" + do_image_wic[depends] += "${INITRAMFS_RECIPE}:do_build" + +And it could now be changed to: + + IMAGE_INITRD ?= "cip-core-initramfs" + +INITRD_IMAGE is "only" deprecated; meaning that it may still be used (but +build-time warnings will be raised). If both IMAGE_INITRD and INITRD_IMAGE +are set then the latter will be ignored (a warning noting that both were +set will be emitted). diff --git a/doc/user_manual.md b/doc/user_manual.md index 7133b217..230ea1cc 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -574,7 +574,7 @@ Every machine is described in its configuration file. The file defines the follo - U-Boot or other boot loader. - Machine-specific firmware. - `KERNEL_IMAGE` - The name of kernel binary that it installed to `/boot` folder in target filesystem. This variable is used by Isar to extract the kernel binary and put it into the deploy folder. This makes sense for embedded devices, where kernel and root filesystem are written to different flash partitions. This variable is optional. - - `INITRD_IMAGE` - The name of `ramdisk` binary. The meaning of this variable is similar to `KERNEL_IMAGE`. This variable is optional. + - `INITRD_IMAGE` - The name of `initramfs` recipe to be built and used by the imager. - `MACHINE_SERIAL` - The name of serial device that will be used for console output. - `IMAGE_FSTYPES` - The types of images to be generated for this machine. @@ -583,7 +583,6 @@ Below is an example of machine configuration file for `Raspberry Pi` board: IMAGE_PREINSTALL = "linux-image-rpi-rpfv \ raspberrypi-bootloader-nokernel" KERNEL_IMAGE = "vmlinuz-4.4.0-1-rpi" -INITRD_IMAGE = "initrd.img-4.4.0-1-rpi" MACHINE_SERIAL = "ttyAMA0" IMAGE_FSTYPES = "wic" WKS_FILE = "rpi-sdimg" diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 441ea936..dff918d7 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -21,10 +21,35 @@ IMAGE_INSTALL += "${KERNEL_IMAGE_PKG}" # Name of the image including distro&machine names IMAGE_FULLNAME = "${PN}-${DISTRO}-${MACHINE}" -# These variables are used by wic and start_vm -KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}" +# Deprecated; this would be set to e.g. "${INITRAMFS_RECIPE}-${DISTRO}-${MACHINE}.initrd.img" INITRD_IMAGE ?= "" -INITRD_DEPLOY_FILE = "${@ d.getVar('INITRD_IMAGE') or '${IMAGE_FULLNAME}-initrd.img'}" + +# IMAGE_INITRD should be used instead (variables consumed by this image class should +# be prefixed with IMAGE_ for consistency) +IMAGE_INITRD ?= "" + +# Name of the deployed initrd image +INITRD_DEPLOY_FILE = "${@ d.getVar('IMAGE_INITRD') or '${PN}' }-${DISTRO}-${MACHINE}-initrd.img" + +# Make sure dependent initramfs recipe is built +do_image[depends] += "${@ '${IMAGE_INITRD}:do_build' if '${IMAGE_INITRD}' else '' }" + +# Produce warning(s) if INITRD_IMAGE is used +python() { + initrd_image = d.getVar('INITRD_IMAGE') + image_initrd = d.getVar('IMAGE_INITRD') + if initrd_image and image_initrd: + bb.warn('both INITRD_IMAGE (deprecated) and IMAGE_INITRD were set, ' + 'ignoring INITRD_IMAGE and using ' + f'IMAGE_INITRD = "{image_initrd}"') + d.setVar('INITRD_IMAGE', '') + elif initrd_image: + bb.warn('INITRD_IMAGE is deprecated, use IMAGE_INITRD instead') + d.setVar('INITRD_DEPLOY_FILE', initrd_image) +} + +# This variable is used by wic and start_vm +KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}" # This defines the deployed dtbs for reuse by imagers DTB_FILES ?= "" diff --git a/testsuite/citest.py b/testsuite/citest.py index e53dfa9b..f944ee4a 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -288,6 +288,13 @@ class InitRdBaseTest(CIBaseTest): "IMAGE_INSTALL:remove = 'enable-fsck'", ] + def init(self): + super().init() + self.deploy_dir = os.path.join(self.build_dir, 'tmp', 'deploy') + + def deploy_dir_image(self, machine): + return os.path.join(self.deploy_dir, 'images', machine) + def dracut_in_image(self, targets): machine = 'qemuamd64' distro = 'bookworm' @@ -308,6 +315,36 @@ class InitRdBaseTest(CIBaseTest): cmd="systemctl is-active dracut-shutdown" ) + def build_image_with_dependent_initrd(self, image, initrd, + distro="debian-bookworm", + machine="qemuamd64", + lines='', + bb_should_fail=False): + mc = f'mc:{machine}-{distro.removeprefix("debian-")}' + initrd_image = f'{initrd}-{distro}-{machine}.initrd.img' + initrd_path = os.path.join(self.deploy_dir_image(machine), initrd_image) + + # cleansstate if the initrd image was already built/deployed to verify + # that a new build does result in the image being deployed + ret, _, err = self.exec_cmd(f'{mc}:{initrd}', 'bitbake -c cleansstate') + if ret: + self.fail(f"failed to clean {initrd}: {err}") + + # Make sure it is no longer deployed + if os.path.exists(initrd_path): + os.unlink(initrd_path) + + # Build the rootfs image and verify that its dependent initrd image + # was built and deployed + self.perform_build_test(f'{mc}:{image}', lines=lines, should_fail=bb_should_fail) + + if bb_should_fail is False: + if os.path.exists(initrd_path) is False: + self.fail(f"initrd image not found: {initrd_path}!") + else: + if os.path.exists(initrd_path): + self.fail(f"initrd found despite bitbake failure: {initrd_path}!") + class InitRdTest(InitRdBaseTest): """ @@ -332,6 +369,52 @@ class InitRdTest(InitRdBaseTest): self.perform_build_test('mc:qemuamd64-bookworm:isar-image-ci', should_fail=True, lines=lines) + def test_var_initrd_image(self): + """ Check if deprecated INITRD_IMAGE variable may be used. """ + initrd = 'isar-initramfs' + distro = 'debian-bookworm' + machine = 'qemuamd64' + + lines = [ + f"INITRD_IMAGE = '{initrd}-{distro}-{machine}.initrd.img'", + f"do_image[depends] += '{initrd}:do_build'" + ] + + self.init() + self.build_image_with_dependent_initrd('isar-image-ci', initrd, + distro, machine, lines) + + def test_var_image_initrd(self): + """ Check build of an image with a dependent initrd using IMAGE_INITRD. """ + initrd = 'isar-initramfs' + lines = [f"IMAGE_INITRD = '{initrd}'"] + + self.init() + self.build_image_with_dependent_initrd('isar-image-ci', initrd, lines=lines) + + def test_var_image_initrd_and_initrd_image(self): + """ Check use of both IMAGE_INITRD and INITRD_IMAGE. """ + initrd = 'isar-initramfs' + + self.init() + + # While both may be set, IMAGE_INITRD takes precedence. Ensure + # by specifying an invalid recipe name: bitbake should fail. + lines = [ + "IMAGE_INITRD = 'not-a-valid-initrd-recipe'", + f"INITRD_IMAGE = '{initrd}-debian-bookworm-qemuamd64.initrd.img'" + ] + self.build_image_with_dependent_initrd('isar-image-ci', initrd, lines=lines, + bb_should_fail=True) + + # The build should succeed if we have a valid IMAGE_INITRD even + # with an invalifd INITRD_IMAGE + lines = [ + f"IMAGE_INITRD = '{initrd}'", + "INITRD_IMAGE = 'not-a-valid-initrd-file'" + ] + self.build_image_with_dependent_initrd('isar-image-ci', initrd, lines=lines) + class InitRdCrossTests(InitRdBaseTest): """