If f2fs support requires recipes that are not available in oe-core, is
it possible to add that support (and tests) to the layer that has the
needed recipes, e.g. meta-filesystems? In general, we try to avoid
having things in oe-core that cannot be tested without adding other
layers.

Alex

On Wed, 1 Mar 2023 at 15:37, Anna-Lena Marx via lists.openembedded.org
<anna-lena.marx=inovex...@lists.openembedded.org> wrote:
>
> Hi,
>
> took me a while to reproduce the failure locally.
> It's because meta-oe and meta-filesystems are not as default included in the 
> bblayers.conf used for oe-selftest.
>
> I don't want to touch bblayers and I think this is not intended as it would 
> be the same for e.g. erofs for which no test case was added.
> Alexander Kanavin pointed me on the poky mailing list to these tests and in 
> fact, it's good to have them in general.
> So what's the preferred way for oe-core?
> Leave the tests and add the dependencies (for the specific tests) or just 
> remove the test cases?
>
> -- Anna
>
>
>
>
> Am Di., 28. Feb. 2023 um 16:20 Uhr schrieb Alexandre Belloni 
> <alexandre.bell...@bootlin.com>:
>>
>> Hello,
>>
>> this failed on the autobuilders:
>>
>> ERROR: Nothing PROVIDES 'f2fs-tools-native' (but 
>> /home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-sato/images/core-image-sato.bb,
>>  
>> /home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-sato/images/core-image-sato-sdk.bb,
>>  
>> /home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-core/images/core-image-minimal.bb,
>>  
>> /home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-core/images/core-image-minimal-dev.bb,
>>  
>> /home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-core/images/core-image-ptest-all.bb
>>  DEPENDS on or otherwise requires it). Close matches:
>>   btrfs-tools-native
>>   dosfstools-native
>>   spirv-tools-native
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/65/builds/6790/steps/11/logs/stdio
>>
>> On 28/02/2023 16:00:58+0100, Anna-Lena Marx via lists.openembedded.org wrote:
>> > Building F2FS rootfs is supported in Yocto/OpenEmbedded -
>> > see image_types.bbclass, but not in WIC.
>> > This adds it as a nice convenience feature.
>> >
>> > F2FS needs a minimum size of ~500M to operate correctly due to
>> > an overprovision functionality.
>> >
>> > Signed-off-by: Anna-Lena Marx <anna-lena.m...@inovex.de>
>> > ---
>> >  meta/classes-recipe/image_types_wic.bbclass |  2 +-
>> >  meta/lib/oeqa/selftest/cases/wic.py         |  2 ++
>> >  meta/recipes-core/meta/wic-tools.bb         |  2 +-
>> >  scripts/lib/wic/help.py                     |  1 +
>> >  scripts/lib/wic/ksparser.py                 |  2 +-
>> >  scripts/lib/wic/misc.py                     |  1 +
>> >  scripts/lib/wic/partition.py                | 32 ++++++++++++++++++++-
>> >  7 files changed, 38 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/meta/classes-recipe/image_types_wic.bbclass 
>> > b/meta/classes-recipe/image_types_wic.bbclass
>> > index c339b9bdfb..8ae5ecca4d 100644
>> > --- a/meta/classes-recipe/image_types_wic.bbclass
>> > +++ b/meta/classes-recipe/image_types_wic.bbclass
>> > @@ -89,7 +89,7 @@ do_image_wic[recrdeptask] += "do_deploy"
>> >  do_image_wic[deptask] += "do_image_complete"
>> >
>> >  WKS_FILE_DEPENDS_DEFAULT = '${@bb.utils.contains_any("BUILD_ARCH", [ 
>> > 'x86_64', 'i686' ], "syslinux-native", "",d)}'
>> > -WKS_FILE_DEPENDS_DEFAULT += "bmap-tools-native cdrtools-native 
>> > btrfs-tools-native squashfs-tools-native e2fsprogs-native 
>> > erofs-utils-native"
>> > +WKS_FILE_DEPENDS_DEFAULT += "bmap-tools-native cdrtools-native 
>> > btrfs-tools-native squashfs-tools-native e2fsprogs-native 
>> > erofs-utils-native f2fs-tools-native"
>> >  # Unified kernel images need objcopy
>> >  WKS_FILE_DEPENDS_DEFAULT += "virtual/${MLPREFIX}${TARGET_PREFIX}binutils"
>> >  WKS_FILE_DEPENDS_BOOTLOADERS = ""
>> > diff --git a/meta/lib/oeqa/selftest/cases/wic.py 
>> > b/meta/lib/oeqa/selftest/cases/wic.py
>> > index ca1abb970a..5e255e35c7 100644
>> > --- a/meta/lib/oeqa/selftest/cases/wic.py
>> > +++ b/meta/lib/oeqa/selftest/cases/wic.py
>> > @@ -1188,6 +1188,7 @@ class Wic2(WicTestCase):
>> >          with NamedTemporaryFile("w", suffix=".wks") as wks:
>> >              wks.writelines(['part ext2   --fstype ext2     --source 
>> > rootfs\n',
>> >                              'part btrfs  --fstype btrfs    --source 
>> > rootfs --size 40M\n',
>> > +                            'part f2fs   --fstype f2fs     --source 
>> > rootfs --size 50M\n',
>> >                              'part squash --fstype squashfs --source 
>> > rootfs\n',
>> >                              'part swap   --fstype swap --size 1M\n',
>> >                              'part emptyvfat   --fstype vfat   --size 
>> > 1M\n',
>> > @@ -1258,6 +1259,7 @@ class Wic2(WicTestCase):
>> >              wks.writelines(
>> >                  ['part ext2   --fstype ext2     --source rootfs 
>> > --mkfs-extraopts "-D -F -i 8192"\n',
>> >                   "part btrfs  --fstype btrfs    --source rootfs --size 
>> > 40M --mkfs-extraopts='--quiet'\n",
>> > +                 "part f2fs   --fstype f2fs     --source rootfs --size 
>> > 50M --mkfs-extraopts='-O extra_attr -o 20'\n",
>> >                   'part squash --fstype squashfs --source rootfs 
>> > --mkfs-extraopts "-no-sparse -b 4096"\n',
>> >                   'part emptyvfat   --fstype vfat   --size 1M 
>> > --mkfs-extraopts "-S 1024 -s 64"\n',
>> >                   'part emptymsdos  --fstype msdos  --size 1M 
>> > --mkfs-extraopts "-S 1024 -s 64"\n',
>> > diff --git a/meta/recipes-core/meta/wic-tools.bb 
>> > b/meta/recipes-core/meta/wic-tools.bb
>> > index 9282d36a4d..d30ce66b56 100644
>> > --- a/meta/recipes-core/meta/wic-tools.bb
>> > +++ b/meta/recipes-core/meta/wic-tools.bb
>> > @@ -7,7 +7,7 @@ DEPENDS = "\
>> >             mtools-native bmap-tools-native grub-native cdrtools-native \
>> >             btrfs-tools-native squashfs-tools-native pseudo-native \
>> >             e2fsprogs-native util-linux-native tar-native 
>> > erofs-utils-native \
>> > -           virtual/${TARGET_PREFIX}binutils \
>> > +           f2fs-tools-native virtual/${TARGET_PREFIX}binutils \
>> >             "
>> >  DEPENDS:append:x86 = " syslinux-native syslinux grub-efi systemd-boot"
>> >  DEPENDS:append:x86-64 = " syslinux-native syslinux grub-efi systemd-boot"
>> > diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
>> > index 73e3380cde..0094065931 100644
>> > --- a/scripts/lib/wic/help.py
>> > +++ b/scripts/lib/wic/help.py
>> > @@ -931,6 +931,7 @@ DESCRIPTION
>> >               btrfs
>> >               squashfs
>> >               erofs
>> > +             f2fs
>> >               swap
>> >
>> >           --fsoptions: Specifies a free-form string of options to be
>> > diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
>> > index d1e546b12d..e10ce6581d 100644
>> > --- a/scripts/lib/wic/ksparser.py
>> > +++ b/scripts/lib/wic/ksparser.py
>> > @@ -159,7 +159,7 @@ class KickStart():
>> >          part.add_argument('--fstype', default='vfat',
>> >                            choices=('ext2', 'ext3', 'ext4', 'btrfs',
>> >                                     'squashfs', 'vfat', 'msdos', 'erofs',
>> > -                                   'swap', 'none'))
>> > +                                   'f2fs', 'swap', 'none'))
>> >          part.add_argument('--mkfs-extraopts', default='')
>> >          part.add_argument('--label')
>> >          part.add_argument('--use-label', action='store_true')
>> > diff --git a/scripts/lib/wic/misc.py b/scripts/lib/wic/misc.py
>> > index 2b90821b30..dc84a37423 100644
>> > --- a/scripts/lib/wic/misc.py
>> > +++ b/scripts/lib/wic/misc.py
>> > @@ -41,6 +41,7 @@ NATIVE_RECIPES = {"bmaptool": "bmap-tools",
>> >                    "mkfs.ext3": "e2fsprogs",
>> >                    "mkfs.ext4": "e2fsprogs",
>> >                    "mkfs.vfat": "dosfstools",
>> > +                  "mkfs.f2fs": "f2fs-tools",
>> >                    "mksquashfs": "squashfs-tools",
>> >                    "mkswap": "util-linux",
>> >                    "mmd": "mtools",
>> > diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
>> > index 382afa44bc..6adcaa041f 100644
>> > --- a/scripts/lib/wic/partition.py
>> > +++ b/scripts/lib/wic/partition.py
>> > @@ -208,7 +208,7 @@ class Partition():
>> >          Prepare content for a rootfs partition i.e. create a partition
>> >          and fill it from a /rootfs dir.
>> >
>> > -        Currently handles ext2/3/4, btrfs, vfat and squashfs.
>> > +        Currently handles ext2/3/4, btrfs, vfat, squashfs and f2fs.
>> >          """
>> >
>> >          rootfs = "%s/rootfs_%s.%s.%s" % (cr_workdir, self.label,
>> > @@ -351,6 +351,36 @@ class Partition():
>> >               self.mkfs_extraopts, self.fsuuid, rootfs)
>> >          exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
>> >
>> > +    def prepare_rootfs_f2fs(self, rootfs, cr_workdir, oe_builddir, 
>> > rootfs_dir,
>> > +                            native_sysroot, pseudo):
>> > +        """
>> > +        Prepare content for a f2fs rootfs partition.
>> > +        """
>> > +        du_cmd = "du -ks %s" % rootfs_dir
>> > +        out = exec_cmd(du_cmd)
>> > +        actual_rootfs_size = int(out.split()[0])
>> > +
>> > +        min_f2fs_size = 524288
>> > +        rootfs_size = self.get_rootfs_size(actual_rootfs_size)
>> > +        if rootfs_size < min_f2fs_size:
>> > +            rootfs_size = min_f2fs_size
>> > +
>> > +        with open(rootfs, 'w') as sparse:
>> > +            os.ftruncate(sparse.fileno(), rootfs_size * 1024)
>> > +
>> > +        extraopts = self.mkfs_extraopts or "-O extra_attr,compression"
>> > +
>> > +        label_str = ""
>> > +        if self.label:
>> > +            label_str = "-l %s" % self.label
>> > +
>> > +        mkfs_f2fs_cmd = "mkfs.f2fs %s %s %s" % \
>> > +                        (label_str, extraopts, rootfs)
>> > +        exec_native_cmd(mkfs_f2fs_cmd, native_sysroot, pseudo=pseudo)
>> > +
>> > +        sload_f2fs_cmd = "sload.f2fs -f %s %s" % (rootfs_dir, rootfs)
>> > +        exec_native_cmd(sload_f2fs_cmd, native_sysroot, pseudo=pseudo)
>> > +
>> >      def prepare_rootfs_msdos(self, rootfs, cr_workdir, oe_builddir, 
>> > rootfs_dir,
>> >                               native_sysroot, pseudo):
>> >          """
>> > --
>> > 2.39.2
>> >
>>
>> >
>> >
>> >
>>
>>
>> --
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#177945): 
https://lists.openembedded.org/g/openembedded-core/message/177945
Mute This Topic: https://lists.openembedded.org/mt/97291696/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to