diff mbox series

classes/image_types: Add vfat image type

Message ID 20230815161126.1513219-1-JPEWhacker@gmail.com
State New
Headers show
Series classes/image_types: Add vfat image type | expand

Commit Message

Joshua Watt Aug. 15, 2023, 4:11 p.m. UTC
From: Joshua Watt <Joshua.Watt@garmin.com>

Adds support for creating FAT formatted file system images (useful for
boot partitions on some SoCs).

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
 meta/classes-recipe/image_types.bbclass | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Richard Purdie Aug. 16, 2023, 6:47 a.m. UTC | #1
On Tue, 2023-08-15 at 10:11 -0600, Joshua Watt wrote:
> From: Joshua Watt <Joshua.Watt@garmin.com>
> 
> Adds support for creating FAT formatted file system images (useful for
> boot partitions on some SoCs).
> 
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
>  meta/classes-recipe/image_types.bbclass | 12 ++++++++++++
>  1 file changed, 12 insertions(+)

This causes a selftest failure:

https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/5616/steps/15/logs/stdio

[in other selftests as well, a consistent issue for a change!]

Cheers,

Richard
Joshua Watt Aug. 16, 2023, 2:27 p.m. UTC | #2
On Wed, Aug 16, 2023 at 12:47 AM Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
>
> On Tue, 2023-08-15 at 10:11 -0600, Joshua Watt wrote:
> > From: Joshua Watt <Joshua.Watt@garmin.com>
> >
> > Adds support for creating FAT formatted file system images (useful for
> > boot partitions on some SoCs).
> >
> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> > ---
> >  meta/classes-recipe/image_types.bbclass | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
>
> This causes a selftest failure:

Oops, sorry about that. I'll take a look

>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/5616/steps/15/logs/stdio
>
> [in other selftests as well, a consistent issue for a change!]
>
> Cheers,
>
> Richard
diff mbox series

Patch

diff --git a/meta/classes-recipe/image_types.bbclass b/meta/classes-recipe/image_types.bbclass
index fdee835e7c8..c75fd212703 100644
--- a/meta/classes-recipe/image_types.bbclass
+++ b/meta/classes-recipe/image_types.bbclass
@@ -131,6 +131,12 @@  IMAGE_CMD:erofs = "mkfs.erofs ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}.er
 IMAGE_CMD:erofs-lz4 = "mkfs.erofs -zlz4 ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}.erofs-lz4 ${IMAGE_ROOTFS}"
 IMAGE_CMD:erofs-lz4hc = "mkfs.erofs -zlz4hc ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}.erofs-lz4hc ${IMAGE_ROOTFS}"
 
+oe_mkvfatfs () {
+    mkfs.vfat $@ -C ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.vfat ${ROOTFS_SIZE}
+    mcopy -i "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.vfat" -vsmpQ ${IMAGE_ROOTFS}/* ::/
+}
+
+IMAGE_CMD:vfat = "oe_mkvfatfs ${EXTRA_IMAGECMD}"
 
 IMAGE_CMD_TAR ?= "tar"
 # ignore return code 1 "file changed as we read it" as other tasks(e.g. do_image_wic) may be hardlinking rootfs
@@ -266,6 +272,10 @@  EXTRA_IMAGECMD:ext4 ?= "-i 4096"
 EXTRA_IMAGECMD:btrfs ?= "-n 4096 --shrink"
 EXTRA_IMAGECMD:f2fs ?= ""
 
+# If a specific FAT size is needed, set it here (e.g. "-F 32"/"-F 16"/"-F 12")
+# otherwise mkfs.vfat will automatically pick one
+EXTRA_IMAGECMD:vfat ?= ""
+
 do_image_cpio[depends] += "cpio-native:do_populate_sysroot"
 do_image_jffs2[depends] += "mtd-utils-native:do_populate_sysroot"
 do_image_cramfs[depends] += "util-linux-native:do_populate_sysroot"
@@ -285,6 +295,7 @@  do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot"
 do_image_erofs[depends] += "erofs-utils-native:do_populate_sysroot"
 do_image_erofs_lz4[depends] += "erofs-utils-native:do_populate_sysroot"
 do_image_erofs_lz4hc[depends] += "erofs-utils-native:do_populate_sysroot"
+do_image_vfat[depends] += "dosfstools-native:do_populate_sysroot mtools-native:do_populate_sysroot"
 
 # This variable is available to request which values are suitable for IMAGE_FSTYPES
 IMAGE_TYPES = " \
@@ -294,6 +305,7 @@  IMAGE_TYPES = " \
     ext3 ext3.gz \
     ext4 ext4.gz \
     btrfs \
+    vfat \
     squashfs squashfs-xz squashfs-lzo squashfs-lz4 squashfs-zst \
     ubi ubifs multiubi \
     tar tar.gz tar.bz2 tar.xz tar.lz4 tar.zst \