Rebuild after cleaning does not work anymore, bugfix

Message ID 4uil9nq8jkub.6oVt5dOuml8uqWJ9Z3m4rw2@16F0H.trk.elasticemail.com
State Superseded, archived
Headers show
Series Rebuild after cleaning does not work anymore, bugfix | expand

Commit Message

Roberto A. Foglietta Dec. 6, 2022, 11:06 p.m. UTC
From: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>

bugfix, image and roofs classes, fails in rebuilding - rebuild after cleaning
does not work anymore but it is required to remove manually all the directories
and this would take longer to rebuild. This patch fixes this new worng
behaviour which happens when the kernel is not compile but installed.

Reproducibility: this sequence of commands does not work anymore

kcbuild
./kas-container --isar clean
     XOR/AND
sudo ./kas-container clean
kcbuild

It fails with error while the following still works

kcbuild
sudo rm -rf build/tmp build/sstate-cache
kcbuild

but it takes more time than the previous when it was working.

Signed-off-by: Roberto A. Foglietta <roberto.foglietta@gmail.com>
---
 meta/classes/image.bbclass  | 9 +++++----
 meta/classes/rootfs.bbclass | 3 +++
 2 files changed, 8 insertions(+), 4 deletions(-)

Patch

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 813e1f3..d5c173b 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -346,17 +346,18 @@  DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}"
 do_copy_boot_files[dirs] = "${DEPLOY_DIR_IMAGE}"
 do_copy_boot_files[lockfiles] += "${DEPLOY_DIR_IMAGE}/isar.lock"
 do_copy_boot_files() {
-    kernel="$(realpath -q '${IMAGE_ROOTFS}'/vmlinu[xz])"
+    set -x
+    kernel="$(realpath -q '${IMAGE_ROOTFS}'/vmlinu[xz] || true)"
     if [ ! -f "$kernel" ]; then
-        kernel="$(realpath -q '${IMAGE_ROOTFS}'/boot/vmlinu[xz])"
+        kernel="$(realpath -q '${IMAGE_ROOTFS}'/boot/vmlinu[xz] || true)"
     fi
     if [ -f "$kernel" ]; then
         sudo cat "$kernel" > "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE}"
     fi
 
-    initrd="$(realpath -q '${IMAGE_ROOTFS}/initrd.img')"
+    initrd="$(realpath -q '${IMAGE_ROOTFS}/initrd.img' || true)"
     if [ ! -f "$initrd" ]; then
-        initrd="$(realpath -q '${IMAGE_ROOTFS}/boot/initrd.img')"
+        initrd="$(realpath -q '${IMAGE_ROOTFS}/boot/initrd.img' || true)"
     fi
     if [ -f "$initrd" ]; then
         cp -f "$initrd" '${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE}'
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index d19ac03..0d16754 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -33,6 +33,9 @@  rootfs_do_mounts[weight] = "3"
 rootfs_do_mounts() {
     sudo -s <<'EOSUDO'
         set -e
+	for i in dev/shm dev/pts proc sys; do
+		mkdir -p '${ROOTFSDIR}/$i'
+	done
         mountpoint -q '${ROOTFSDIR}/dev' || \
             ( mount -o bind,private /dev '${ROOTFSDIR}/dev' &&
               mount -t tmpfs none '${ROOTFSDIR}/dev/shm' &&