[v2,3/4] rootfs: Avoid unneeded commands inside chroot

Message ID f49a92ff9f2a77e40e89b4c573d6e3cd5dbcf554.1758020712.git.jan.kiszka@siemens.com
State New
Headers show
Series Several micro-optimizations | expand

Commit Message

Jan Kiszka Sept. 16, 2025, 11:05 a.m. UTC
From: Jan Kiszka <jan.kiszka@siemens.com>

As the chroot implies emulation in case of cross-installation, any call
into it that can be avoided saves a few seconds.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 meta/classes/rootfs.bbclass | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

Patch

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 605d5e01..5c48d91c 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -245,8 +245,11 @@  rootfs_export_package_cache() {
 ROOTFS_INSTALL_COMMAND += "${@ 'rootfs_install_clean_files' if (d.getVar('ROOTFS_CLEAN_FILES') or '').strip() else ''}"
 rootfs_install_clean_files[weight] = "2"
 rootfs_install_clean_files() {
-    sudo -E chroot '${ROOTFSDIR}' \
-        /bin/rm -f ${ROOTFS_CLEAN_FILES}
+    sudo -s <<'EOSUDO'
+    for clean_file in ${ROOTFS_CLEAN_FILES}; do
+        rm -f "${ROOTFSDIR}/$clean_file"
+    done
+EOSUDO
 }
 
 ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_install"
@@ -490,14 +493,14 @@  python do_generate_initramfs_setscene () {
 rootfs_generate_initramfs[progress] = "custom:rootfs_progress.InitrdProgressHandler"
 rootfs_generate_initramfs() {
     if [ -n "$(sudo find '${ROOTFSDIR}/boot' -type f -name 'vmlinu[xz]*')" ]; then
-        sudo -E chroot "${ROOTFSDIR}" sh -c '\
-            for kernel in /boot/vmlinu[xz]-*; do \
-                export kernel_version=$(basename $kernel | cut -d'-' -f2-); \
-                mods_total="$(find /usr/lib/modules/$kernel_version -type f -name '*.ko*' | wc -l)"; \
-                echo "Total number of modules: $mods_total"; \
-                echo "Generating initrd for kernel version: $kernel_version"; \
-                update-initramfs -u -v -k "$kernel_version"; \
-            done;'
+        for kernel in ${ROOTFSDIR}/boot/vmlinu[xz]-*; do
+            export kernel_version=$(basename $kernel | cut -d'-' -f2-)
+            mods_total="$(find ${ROOTFSDIR}/usr/lib/modules/$kernel_version -type f -name '*.ko*' | wc -l)"
+            echo "Total number of modules: $mods_total"
+            echo "Generating initrd for kernel version: $kernel_version"
+            sudo -E chroot "${ROOTFSDIR}" sh -c ' \
+                update-initramfs -u -v -k "$kernel_version"'
+        done
         if [ -n "${INITRD_DEPLOY_FILE}" ]; then
             if [ -f "${ROOTFSDIR}/initrd.img" ]; then
                 # debian (mkinitramfs)