From 86db16c6fe44876ae63fa89c9f25b92f2d3cb34d Mon Sep 17 00:00:00 2001
From: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>
Date: Tue, 6 Dec 2022 23:55:00 +0100
Subject: [PATCH] Rebuild after cleaning does not work anymore, bugfix
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
bugfix, image and rootfs 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 wrong
behaviour which happens when the kernel is not compiled 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(-)
@@ -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}'
@@ -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' &&
--
2.34.1