Message ID | 20240613091636.1156475-2-Quirin.Gylstorff@siemens.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | wic ebg plugins support | expand |
On 13.06.24 11:16, Quirin Gylstorff wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > This fixes the issue that wic arguments --size and --fixed-size > are not correctly interpreted. > > This fixes issue #104. > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > .../wic/plugins/source/efibootguard-boot.py | 34 ++++--------------- > .../wic/plugins/source/efibootguard-efi.py | 30 ++-------------- > 2 files changed, 9 insertions(+), 55 deletions(-) > > diff --git a/scripts/lib/wic/plugins/source/efibootguard-boot.py b/scripts/lib/wic/plugins/source/efibootguard-boot.py > index 4e3aefb..2b06fd1 100644 > --- a/scripts/lib/wic/plugins/source/efibootguard-boot.py > +++ b/scripts/lib/wic/plugins/source/efibootguard-boot.py > @@ -136,40 +136,20 @@ class EfibootguardBootPlugin(SourcePlugin): > msger.error("file %s not found in directory %s", > boot_file, kernel_dir) > exit(1) > - cls._create_img(part_rootfs_dir, part, cr_workdir) > + cls._create_img(part_rootfs_dir, part, cr_workdir, > + native_sysroot, oe_builddir) > > @classmethod > - def _create_img(cls, part_rootfs_dir, part, cr_workdir): > - # Write label as utf-16le to EFILABEL file > + def _create_img(cls, part_rootfs_dir, part, cr_workdir, > + native_sysroot, oe_builddir): > + # Write label as utf-16le to EFILABEL file > with open("%s/EFILABEL" % part_rootfs_dir, 'wb') as filedescriptor: > filedescriptor.write(part.label.upper().encode("utf-16le")) > > - du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir > - blocks = int(exec_cmd(du_cmd).split()[0]) > - > - extra_blocks = part.get_extra_block_count(blocks) > - if extra_blocks < BOOTDD_EXTRA_SPACE: > - extra_blocks = BOOTDD_EXTRA_SPACE > - > - blocks += extra_blocks > - blocks = blocks + (16 - (blocks % 16)) > - > - msger.debug("Added %d extra blocks to %s to get to %d total blocks", > - extra_blocks, part.mountpoint, blocks) > - > - # dosfs image, created by mkdosfs > bootimg = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno) > > - dosfs_cmd = "mkdosfs -F 16 -S 512 -n %s -C %s %d -i %s" % \ > - (part.label.upper(), bootimg, blocks, part.fsuuid) > - exec_cmd(dosfs_cmd) > - > - mcopy_cmd = "mcopy -v -i %s -s %s/* ::/" % (bootimg, part_rootfs_dir) > - exec_cmd(mcopy_cmd, True) > - > - chmod_cmd = "chmod 644 %s" % bootimg > - exec_cmd(chmod_cmd) > - > + part.prepare_rootfs_msdos(bootimg, cr_workdir, oe_builddir, > + part_rootfs_dir, native_sysroot, None) > du_cmd = "du -Lbks %s" % bootimg > bootimg_size = int(exec_cmd(du_cmd).split()[0]) > > diff --git a/scripts/lib/wic/plugins/source/efibootguard-efi.py b/scripts/lib/wic/plugins/source/efibootguard-efi.py > index e82e990..48f7523 100644 > --- a/scripts/lib/wic/plugins/source/efibootguard-efi.py > +++ b/scripts/lib/wic/plugins/source/efibootguard-efi.py > @@ -100,35 +100,9 @@ class EfibootguardEFIPlugin(SourcePlugin): > name) > exec_cmd(cp_to_deploy_cmd, True) > > - du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir > - blocks = int(exec_cmd(du_cmd).split()[0]) > - > - extra_blocks = part.get_extra_block_count(blocks) > - if extra_blocks < BOOTDD_EXTRA_SPACE: > - extra_blocks = BOOTDD_EXTRA_SPACE > - blocks += extra_blocks > - blocks = blocks + (16 - (blocks % 16)) > - > - msger.debug("Added %d extra blocks to %s to get to %d total blocks", > - extra_blocks, part.mountpoint, blocks) > - > - # dosfs image, created by mkdosfs > efi_part_image = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno) > - > - dosfs_cmd = "mkdosfs -S 512 -n %s -C %s %d -i %s" % \ > - (part.label.upper(), efi_part_image, blocks, part.fsuuid) > - exec_cmd(dosfs_cmd) > - > - # mtools for buster have problems with resursive mcopy. > - # Therefore, create the target dir via mmd first. > - mmd_cmd = "mmd -i %s ::/EFI ::/EFI/BOOT" % (efi_part_image) > - exec_cmd(mmd_cmd, True) > - mcopy_cmd = "mcopy -v -i %s -s %s/EFI/BOOT/* ::/EFI/BOOT" % \ > - (efi_part_image, part_rootfs_dir) > - exec_cmd(mcopy_cmd, True) > - > - chmod_cmd = "chmod 644 %s" % efi_part_image > - exec_cmd(chmod_cmd) > + part.prepare_rootfs_msdos(efi_part_image, cr_workdir, oe_builddir, > + part_rootfs_dir, native_sysroot, None) > > du_cmd = "du -Lbks %s" % efi_part_image > efi_part_image_size = int(exec_cmd(du_cmd).split()[0]) There is no change compared to v3 which I pulled out again due to a regression. Does it mean that patch 2/2 of this series should rather be 1/2? Jan
diff --git a/scripts/lib/wic/plugins/source/efibootguard-boot.py b/scripts/lib/wic/plugins/source/efibootguard-boot.py index 4e3aefb..2b06fd1 100644 --- a/scripts/lib/wic/plugins/source/efibootguard-boot.py +++ b/scripts/lib/wic/plugins/source/efibootguard-boot.py @@ -136,40 +136,20 @@ class EfibootguardBootPlugin(SourcePlugin): msger.error("file %s not found in directory %s", boot_file, kernel_dir) exit(1) - cls._create_img(part_rootfs_dir, part, cr_workdir) + cls._create_img(part_rootfs_dir, part, cr_workdir, + native_sysroot, oe_builddir) @classmethod - def _create_img(cls, part_rootfs_dir, part, cr_workdir): - # Write label as utf-16le to EFILABEL file + def _create_img(cls, part_rootfs_dir, part, cr_workdir, + native_sysroot, oe_builddir): + # Write label as utf-16le to EFILABEL file with open("%s/EFILABEL" % part_rootfs_dir, 'wb') as filedescriptor: filedescriptor.write(part.label.upper().encode("utf-16le")) - du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir - blocks = int(exec_cmd(du_cmd).split()[0]) - - extra_blocks = part.get_extra_block_count(blocks) - if extra_blocks < BOOTDD_EXTRA_SPACE: - extra_blocks = BOOTDD_EXTRA_SPACE - - blocks += extra_blocks - blocks = blocks + (16 - (blocks % 16)) - - msger.debug("Added %d extra blocks to %s to get to %d total blocks", - extra_blocks, part.mountpoint, blocks) - - # dosfs image, created by mkdosfs bootimg = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno) - dosfs_cmd = "mkdosfs -F 16 -S 512 -n %s -C %s %d -i %s" % \ - (part.label.upper(), bootimg, blocks, part.fsuuid) - exec_cmd(dosfs_cmd) - - mcopy_cmd = "mcopy -v -i %s -s %s/* ::/" % (bootimg, part_rootfs_dir) - exec_cmd(mcopy_cmd, True) - - chmod_cmd = "chmod 644 %s" % bootimg - exec_cmd(chmod_cmd) - + part.prepare_rootfs_msdos(bootimg, cr_workdir, oe_builddir, + part_rootfs_dir, native_sysroot, None) du_cmd = "du -Lbks %s" % bootimg bootimg_size = int(exec_cmd(du_cmd).split()[0]) diff --git a/scripts/lib/wic/plugins/source/efibootguard-efi.py b/scripts/lib/wic/plugins/source/efibootguard-efi.py index e82e990..48f7523 100644 --- a/scripts/lib/wic/plugins/source/efibootguard-efi.py +++ b/scripts/lib/wic/plugins/source/efibootguard-efi.py @@ -100,35 +100,9 @@ class EfibootguardEFIPlugin(SourcePlugin): name) exec_cmd(cp_to_deploy_cmd, True) - du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir - blocks = int(exec_cmd(du_cmd).split()[0]) - - extra_blocks = part.get_extra_block_count(blocks) - if extra_blocks < BOOTDD_EXTRA_SPACE: - extra_blocks = BOOTDD_EXTRA_SPACE - blocks += extra_blocks - blocks = blocks + (16 - (blocks % 16)) - - msger.debug("Added %d extra blocks to %s to get to %d total blocks", - extra_blocks, part.mountpoint, blocks) - - # dosfs image, created by mkdosfs efi_part_image = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno) - - dosfs_cmd = "mkdosfs -S 512 -n %s -C %s %d -i %s" % \ - (part.label.upper(), efi_part_image, blocks, part.fsuuid) - exec_cmd(dosfs_cmd) - - # mtools for buster have problems with resursive mcopy. - # Therefore, create the target dir via mmd first. - mmd_cmd = "mmd -i %s ::/EFI ::/EFI/BOOT" % (efi_part_image) - exec_cmd(mmd_cmd, True) - mcopy_cmd = "mcopy -v -i %s -s %s/EFI/BOOT/* ::/EFI/BOOT" % \ - (efi_part_image, part_rootfs_dir) - exec_cmd(mcopy_cmd, True) - - chmod_cmd = "chmod 644 %s" % efi_part_image - exec_cmd(chmod_cmd) + part.prepare_rootfs_msdos(efi_part_image, cr_workdir, oe_builddir, + part_rootfs_dir, native_sysroot, None) du_cmd = "du -Lbks %s" % efi_part_image efi_part_image_size = int(exec_cmd(du_cmd).split()[0])