[PATCH] image.bbclass: copy dtbs into a deploydir/subdirectory based on the image name

61 views
Skip to first unread message

nicusor...@siemens.com

unread,
Mar 28, 2024, 3:54:07 AM3/28/24
to isar-...@googlegroups.com
This fixes the build failures detailed in the https://groups.google.com/g/isar-users/c/Va0Ue-ISYeA and
https://groups.google.com/g/isar-users/c/PSGU_AcdPZ8
This adds the MACHINE variable to WICVARS, hence the need to reflect this change in
cip-core/scripts/lib/wic/plugins/source/efibootguard-boot.py


Signed-off-by: Nicusor Huhulea <nicusor...@siemens.com>

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 73f1d52c..9b98719b 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -377,16 +377,19 @@ do_copy_boot_files() {
fi
fi

- for file in ${DTB_FILES}; do
- dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
- -iwholename '*linux-image-*/'${file} | head -1)"
-
- if [ -z "$dtb" -o ! -e "$dtb" ]; then
- die "${file} not found"
- fi
+ if [ -n "${DTB_FILES}" ]; then
+ mkdir -p "${DEPLOYDIR}/${IMAGE_FULLNAME}.dtbs"
+ for file in ${DTB_FILES}; do
+ dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
+ -iwholename '*linux-image-*/'${file} | head -1)"
+
+ if [ -z "$dtb" -o ! -e "$dtb" ]; then
+ die "${file} not found"
+ fi

- cp -f "$dtb" "${DEPLOYDIR}/"
- done
+ cp -f "$dtb" "${DEPLOYDIR}/${IMAGE_FULLNAME}.dtbs"
+ done
+ fi
}
addtask copy_boot_files before do_rootfs_postprocess after do_rootfs_install

diff --git a/meta/classes/imagetypes_wic.bbclass b/meta/classes/imagetypes_wic.bbclass
index bce881ed..f0f1c438 100644
--- a/meta/classes/imagetypes_wic.bbclass
+++ b/meta/classes/imagetypes_wic.bbclass
@@ -107,7 +107,7 @@ WICVARS += "\
ROOTFS_SIZE STAGING_DATADIR STAGING_DIR STAGING_LIBDIR TARGET_SYS TRANSLATED_TARGET_ARCH"

# Isar specific vars used in our plugins
-WICVARS += "DISTRO DISTRO_ARCH"
+WICVARS += "DISTRO DISTRO_ARCH MACHINE"

python do_rootfs_wicenv () {
wicvars = d.getVar('WICVARS')

Gylstorff Quirin

unread,
Mar 28, 2024, 12:28:35 PM3/28/24
to isar-...@googlegroups.com
And what is if we have multi dtbs defined this will overwrite them all.
Quirin

Gylstorff Quirin

unread,
Mar 28, 2024, 12:31:06 PM3/28/24
to isar-...@googlegroups.com
sorry overlooked the mkdir.
quirin

Gylstorff Quirin

unread,
Mar 28, 2024, 1:53:40 PM3/28/24
to nicusor...@siemens.com, isar-...@googlegroups.com


On 3/28/24 8:54 AM, 'nicusor...@siemens.com' via isar-users wrote:
This will break scripts/lib/wic/plugins/source/bootimg-efi.py from
bitbake[1].

[1]:
https://github.com/openembedded/openembedded-core/blob/master/scripts/lib/wic/plugins/source/bootimg-efi.py

Quirin

nicusor...@siemens.com

unread,
Mar 28, 2024, 3:05:46 PM3/28/24
to quirin.g...@siemens.com, isar-...@googlegroups.com
Yes, it will break it without patching it. I'm not sure where this bootimg-efi.py is being used here, as for testing usually I'm using https://github.com/siemens/meta-iot2050

I guess that in this case the equivalent for bootimg-efi.py is https://gitlab.com/cip-project/cip-core/isar-cip-core/-/blob/master/scripts/lib/wic/plugins/source/efibootguard-boot.py which is already patched.

Nicu

________________________________________
From: Gylstorff, Quirin (T CED OES-DE) <quirin.g...@siemens.com>
Sent: Thursday, March 28, 2024 7:53 PM
To: Huhulea, Nicusor Liviu (DI CTO FDS CES LX SVCS); isar-...@googlegroups.com
Subject: Re: [PATCH] image.bbclass: copy dtbs into a deploydir/subdirectory based on the image name

Gylstorff Quirin

unread,
Apr 8, 2024, 4:12:59 AM4/8/24
to Huhulea, Nicusor Liviu (DI CTO FDS CES LX SVCS), isar-...@googlegroups.com


On 3/28/24 8:05 PM, Huhulea, Nicusor Liviu (DI CTO FDS CES LX SVCS) wrote:
> Yes, it will break it without patching it. I'm not sure where this bootimg-efi.py is being used here, as for testing usually I'm using https://github.com/siemens/meta-iot2050

It is used indirect with bootimg-efi-isar.
Quirin

nicusor...@siemens.com

unread,
Apr 12, 2024, 10:11:21 AM4/12/24
to quirin.g...@siemens.com, isar-...@googlegroups.com
updated all the cases where the dtbs path needed to be changed


* update the other areas in order to sync with the dtbs directory path

Signed-off-by: Nicusor Huhulea <nicusor...@siemens.com>

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 98741da0..e90f8fde 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -364,16 +364,19 @@ do_copy_boot_files() {
fi
fi

- for file in ${DTB_FILES}; do
- dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
- -iwholename '*linux-image-*/'${file} | head -1)"
-
- if [ -z "$dtb" -o ! -e "$dtb" ]; then
- die "${file} not found"
- fi
+ if [ -n "${DTB_FILES}" ]; then
+ mkdir -p "${DEPLOYDIR}/${IMAGE_FULLNAME}.dtbs"
+ for file in ${DTB_FILES}; do
+ dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
+ -iwholename '*linux-image-*/'${file} | head -1)"
+
+ if [ -z "$dtb" -o ! -e "$dtb" ]; then
+ die "${file} not found"
+ fi

- cp -f "$dtb" "${DEPLOYDIR}/"
- done
+ cp -f "$dtb" "${DEPLOYDIR}/${IMAGE_FULLNAME}.dtbs"
+ done
+ fi
}
addtask copy_boot_files before do_rootfs_postprocess after do_rootfs_install

diff --git a/meta/classes/imagetypes_wic.bbclass b/meta/classes/imagetypes_wic.bbclass
index bce881ed..adbde400 100644
--- a/meta/classes/imagetypes_wic.bbclass
+++ b/meta/classes/imagetypes_wic.bbclass
@@ -107,7 +107,7 @@ WICVARS += "\
ROOTFS_SIZE STAGING_DATADIR STAGING_DIR STAGING_LIBDIR TARGET_SYS TRANSLATED_TARGET_ARCH"

# Isar specific vars used in our plugins
-WICVARS += "DISTRO DISTRO_ARCH"
+WICVARS += "DISTRO DISTRO_ARCH IMAGE_FULLNAME"

python do_rootfs_wicenv () {
wicvars = d.getVar('WICVARS')
diff --git a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
index 4bfb70a0..218a7fe7 100644
--- a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
+++ b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
@@ -57,7 +57,9 @@ class BootimgEFIPlugin(SourcePlugin):
if dtb:
if ';' in dtb:
raise WicError("Only one DTB supported, exiting")
- cp_cmd = "cp %s/%s %s" % (bootimg_dir, dtb, hdddir)
+ image_fullname = get_bitbake_var("IMAGE_FULLNAME")
+ dtbs_dir = os.path.join(bootimg_dir + "/" + image_fullname + ".dtbs")
+ cp_cmd = "cp %s/%s %s" % (dtbs_dir, dtb, hdddir)
exec_cmd(cp_cmd, True)

@classmethod
@@ -353,8 +355,10 @@ class BootimgEFIPlugin(SourcePlugin):
if dtb:
if ';' in dtb:
raise WicError("Only one DTB supported, exiting")
+ image_fullname = get_bitbake_var("IMAGE_FULLNAME")
+ dtbs_dir = os.path.join(deploy_dir + "/" + image_fullname + ".dtbs")
dtb_params = '--add-section .dtb=%s/%s --change-section-vma .dtb=0x40000' % \
- (deploy_dir, dtb)
+ (dtbs_dir, dtb)
else:
dtb_params = ''

diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index 634a808d..07b177df 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -51,7 +51,9 @@ class BootimgEFIPlugin(SourcePlugin):
if dtb:
if ';' in dtb:
raise WicError("Only one DTB supported, exiting")
- cp_cmd = "cp %s/%s %s" % (bootimg_dir, dtb, hdddir)
+ image_fullname = get_bitbake_var("IMAGE_FULLNAME")
+ dtbs_dir = os.path.join(bootimg_dir + "/" + image_fullname + ".dtbs")
+ cp_cmd = "cp %s/%s %s" % (dtbs_dir, dtb, hdddir)
exec_cmd(cp_cmd, True)

@classmethod
@@ -334,8 +336,10 @@ class BootimgEFIPlugin(SourcePlugin):
if dtb:
if ';' in dtb:
raise WicError("Only one DTB supported, exiting")
+ image_fullname = get_bitbake_var("IMAGE_FULLNAME")
+ dtbs_dir = os.path.join(deploy_dir + "/" + image_fullname + ".dtbs")
dtb_params = '--add-section .dtb=%s/%s --change-section-vma .dtb=0x40000' % \
- (deploy_dir, dtb)
+ (dtbs_dir, dtb)
else:
dtb_params = ''

diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py
index 5dbe2558..1ae6216f 100644
--- a/scripts/lib/wic/plugins/source/bootimg-partition.py
+++ b/scripts/lib/wic/plugins/source/bootimg-partition.py
@@ -180,10 +180,18 @@ class BootimgPartitionPlugin(SourcePlugin):

logger.debug('Kernel dir: %s', bootimg_dir)

+ image_fullname = get_bitbake_var("IMAGE_FULLNAME")
+ dtbs_dir = os.path.join(kernel_dir + "/" + image_fullname + ".dtbs/")

for task in cls.install_task:
src_path, dst_path = task
- logger.debug('Install %s as %s', src_path, dst_path)
+
+ dtb_file = os.path.join(dtbs_dir + os.path.basename(src_path))
+
+ if os.path.exists(dtb_file):
+ src_path = os.path.join(dtbs_dir + src_path)
+
+ logger.debug('Install %s as %s', (src_path, dst_path))
install_cmd = "install -m 0644 -D %s %s" \
% (os.path.join(kernel_dir, src_path),
os.path.join(hdddir, dst_path))


________________________________________
From: Gylstorff, Quirin (T CED OES-DE) <quirin.g...@siemens.com>
Sent: Monday, April 8, 2024 11:12 AM

nicusor...@siemens.com

unread,
Apr 15, 2024, 9:11:39 AM4/15/24
to quirin.g...@siemens.com, isar-...@googlegroups.com
Tested this on all the isar and cip-core machines.
fix patch formatting too.

* update the other areas in order to sync with the dtbs directory path

Signed-off-by: Nicusor Huhulea <nicusor...@siemens.com>
---
meta/classes/image.bbclass | 21 +++++++++++--------
meta/classes/imagetypes_wic.bbclass | 2 +-
.../wic/plugins/source/bootimg-efi-isar.py | 8 +++++--
scripts/lib/wic/plugins/source/bootimg-efi.py | 8 +++++--
.../wic/plugins/source/bootimg-partition.py | 10 ++++++++-
5 files changed, 34 insertions(+), 15 deletions(-)
--
2.39.2

________________________________________
From: Huhulea, Nicusor Liviu (DI CTO FDS CES LX SVCS) <nicusor...@siemens.com>
Sent: Friday, April 12, 2024 5:11 PM
To: Gylstorff, Quirin (T CED OES-DE); isar-...@googlegroups.com

Jan Kiszka

unread,
Apr 15, 2024, 9:19:39 AM4/15/24
to nicusor...@siemens.com, quirin.g...@siemens.com, isar-...@googlegroups.com
Please use "git send-email" and start a new thread. Do not send patches
as reply of previous postings.

On 15.04.24 15:11, 'nicusor...@siemens.com' via isar-users wrote:
> Tested this on all the isar and cip-core machines.
> fix patch formatting too.
>
> * update the other areas in order to sync with the dtbs directory path
>

A git commit message first of all needs to explain WHY you are doing the
change. If the change is complex or took one roat in favor of another,
you can also explain the HOW.

Just compare your patch to others sent here, specifically to patches by
frequent contributors.

Jan
--
Siemens AG, Technology
Linux Expert Center

Reply all
Reply to author
Forward
0 new messages