initramfs: Restore default "generate-initrd" logic in initramfs.bbclass

Message ID 20251209115009.1932908-1-wzh@ilbers.de
State Accepted, archived
Headers show
Series initramfs: Restore default "generate-initrd" logic in initramfs.bbclass | expand

Commit Message

Zhihang Wei Dec. 9, 2025, 11:50 a.m. UTC
After 78d42de "rootfs: rework no-generate-initrd rootfs feature", the logic
for adding "generate-initrd" feature was moved from image.bbclass to
rootfs.bbclass. This feature controls whether the initrd(initramfs) is
generated and deployed under build/tmp/deploy/images/. By default, this
feature is not added.

However, initramfs.bbclass also inherits rootfs.bbclass. As a result, builds
of initramfs recipes, such as isar-initramfs.bb, no longer generate or deploy
an initrd image. The test case test_var_image_initrd has failed.

This patch adds "generate-initrd" feature back to initramfs.bbclass, and
cleans up incorrect conflict resolving in c3c4e72.

Signed-off-by: Zhihang Wei <wzh@ilbers.de>
---
 meta/classes-recipe/image.bbclass     | 3 +++
 meta/classes-recipe/initramfs.bbclass | 1 +
 meta/classes-recipe/rootfs.bbclass    | 4 ----
 3 files changed, 4 insertions(+), 4 deletions(-)

Comments

Zhihang Wei Dec. 11, 2025, 10:02 a.m. UTC | #1
Applied to next.

Zhihang

On 12/9/25 12:50, Zhihang Wei wrote:
> After 78d42de "rootfs: rework no-generate-initrd rootfs feature", the logic
> for adding "generate-initrd" feature was moved from image.bbclass to
> rootfs.bbclass. This feature controls whether the initrd(initramfs) is
> generated and deployed under build/tmp/deploy/images/. By default, this
> feature is not added.
>
> However, initramfs.bbclass also inherits rootfs.bbclass. As a result, builds
> of initramfs recipes, such as isar-initramfs.bb, no longer generate or deploy
> an initrd image. The test case test_var_image_initrd has failed.
>
> This patch adds "generate-initrd" feature back to initramfs.bbclass, and
> cleans up incorrect conflict resolving in c3c4e72.
>
> Signed-off-by: Zhihang Wei <wzh@ilbers.de>
> ---
>   meta/classes-recipe/image.bbclass     | 3 +++
>   meta/classes-recipe/initramfs.bbclass | 1 +
>   meta/classes-recipe/rootfs.bbclass    | 4 ----
>   3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
> index 24a23808..2c8beefa 100644
> --- a/meta/classes-recipe/image.bbclass
> +++ b/meta/classes-recipe/image.bbclass
> @@ -48,6 +48,9 @@ python() {
>           d.setVar('INITRD_DEPLOY_FILE', initrd_image)
>   }
>   
> +# Generate and deploy debian default initrd if no custom initrd needs to be built
> +ROOTFS_FEATURES += "${@ 'generate-initrd' if (d.getVar('INITRD_IMAGE') == '' and d.getVar('IMAGE_INITRD') == '') else ''}"
> +
>   # This variable is used by wic and start_vm
>   KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}"
>   
> diff --git a/meta/classes-recipe/initramfs.bbclass b/meta/classes-recipe/initramfs.bbclass
> index 85b07f28..7d4ae523 100644
> --- a/meta/classes-recipe/initramfs.bbclass
> +++ b/meta/classes-recipe/initramfs.bbclass
> @@ -27,6 +27,7 @@ DEPENDS += "${INITRAMFS_INSTALL}"
>   
>   ROOTFSDIR = "${INITRAMFS_ROOTFS}"
>   ROOTFS_FEATURES = "generate-manifest"
> +ROOTFS_FEATURES += "generate-initrd"
>   ROOTFS_PACKAGES = "${INITRAMFS_GENERATOR_PKG} ${INITRAMFS_PREINSTALL} ${INITRAMFS_INSTALL}"
>   
>   # validate whether there are incompatible packages in the installation list
> diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
> index eb5645af..cbb658dd 100644
> --- a/meta/classes-recipe/rootfs.bbclass
> +++ b/meta/classes-recipe/rootfs.bbclass
> @@ -23,8 +23,6 @@ ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLI
>   ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}"
>   ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}"
>   
> -IMAGE_INITRD ?= ""
> -
>   # Features of the rootfs creation:
>   # available features are:
>   # 'clean-package-cache' - delete package cache from rootfs
> @@ -32,8 +30,6 @@ IMAGE_INITRD ?= ""
>   # 'export-dpkg-status' - exports /var/lib/dpkg/status file to ${ROOTFS_DPKGSTATUS_DEPLOY_DIR}
>   # 'clean-log-files' - delete log files that are not owned by packages
>   # 'populate-systemd-preset' - enable systemd units according to systemd presets
> -# 'generate-initrd' - generate debian default initrd
> -ROOTFS_FEATURES += "${@ 'generate-initrd' if d.getVar('IMAGE_INITRD') == '' else ''}"
>   
>   ROOTFS_APT_ARGS="install --yes -o Debug::pkgProblemResolver=yes"
>

Patch

diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index 24a23808..2c8beefa 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -48,6 +48,9 @@  python() {
         d.setVar('INITRD_DEPLOY_FILE', initrd_image)
 }
 
+# Generate and deploy debian default initrd if no custom initrd needs to be built
+ROOTFS_FEATURES += "${@ 'generate-initrd' if (d.getVar('INITRD_IMAGE') == '' and d.getVar('IMAGE_INITRD') == '') else ''}"
+
 # This variable is used by wic and start_vm
 KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}"
 
diff --git a/meta/classes-recipe/initramfs.bbclass b/meta/classes-recipe/initramfs.bbclass
index 85b07f28..7d4ae523 100644
--- a/meta/classes-recipe/initramfs.bbclass
+++ b/meta/classes-recipe/initramfs.bbclass
@@ -27,6 +27,7 @@  DEPENDS += "${INITRAMFS_INSTALL}"
 
 ROOTFSDIR = "${INITRAMFS_ROOTFS}"
 ROOTFS_FEATURES = "generate-manifest"
+ROOTFS_FEATURES += "generate-initrd"
 ROOTFS_PACKAGES = "${INITRAMFS_GENERATOR_PKG} ${INITRAMFS_PREINSTALL} ${INITRAMFS_INSTALL}"
 
 # validate whether there are incompatible packages in the installation list
diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index eb5645af..cbb658dd 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -23,8 +23,6 @@  ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLI
 ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}"
 ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}"
 
-IMAGE_INITRD ?= ""
-
 # Features of the rootfs creation:
 # available features are:
 # 'clean-package-cache' - delete package cache from rootfs
@@ -32,8 +30,6 @@  IMAGE_INITRD ?= ""
 # 'export-dpkg-status' - exports /var/lib/dpkg/status file to ${ROOTFS_DPKGSTATUS_DEPLOY_DIR}
 # 'clean-log-files' - delete log files that are not owned by packages
 # 'populate-systemd-preset' - enable systemd units according to systemd presets
-# 'generate-initrd' - generate debian default initrd
-ROOTFS_FEATURES += "${@ 'generate-initrd' if d.getVar('IMAGE_INITRD') == '' else ''}"
 
 ROOTFS_APT_ARGS="install --yes -o Debug::pkgProblemResolver=yes"