summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/image_types.bbclass9
-rw-r--r--meta/conf/distro/include/maintainers.inc1
-rw-r--r--meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb21
-rw-r--r--scripts/lib/wic/help.py1
-rw-r--r--scripts/lib/wic/ksparser.py7
-rw-r--r--scripts/lib/wic/partition.py16
-rw-r--r--scripts/lib/wic/plugins/source/rawcopy.py6
7 files changed, 54 insertions, 7 deletions
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index 8028691405..2a45d45c71 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -108,6 +108,11 @@ IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME
108IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo" 108IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
109IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4" 109IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4"
110 110
111IMAGE_CMD_erofs = "mkfs.erofs ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs ${IMAGE_ROOTFS}"
112IMAGE_CMD_erofs-lz4 = "mkfs.erofs -zlz4 ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4 ${IMAGE_ROOTFS}"
113IMAGE_CMD_erofs-lz4hc = "mkfs.erofs -zlz4hc ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4hc ${IMAGE_ROOTFS}"
114
115
111IMAGE_CMD_TAR ?= "tar" 116IMAGE_CMD_TAR ?= "tar"
112# ignore return code 1 "file changed as we read it" as other tasks(e.g. do_image_wic) may be hardlinking rootfs 117# ignore return code 1 "file changed as we read it" as other tasks(e.g. do_image_wic) may be hardlinking rootfs
113IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --sort=name --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]" 118IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --sort=name --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]"
@@ -243,6 +248,9 @@ do_image_ubi[depends] += "mtd-utils-native:do_populate_sysroot"
243do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot" 248do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot"
244do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot" 249do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot"
245do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot" 250do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot"
251do_image_erofs[depends] += "erofs-utils-native:do_populate_sysroot"
252do_image_erofs_lz4[depends] += "erofs-utils-native:do_populate_sysroot"
253do_image_erofs_lz4hc[depends] += "erofs-utils-native:do_populate_sysroot"
246 254
247# This variable is available to request which values are suitable for IMAGE_FSTYPES 255# This variable is available to request which values are suitable for IMAGE_FSTYPES
248IMAGE_TYPES = " \ 256IMAGE_TYPES = " \
@@ -261,6 +269,7 @@ IMAGE_TYPES = " \
261 wic wic.gz wic.bz2 wic.lzma wic.zst \ 269 wic wic.gz wic.bz2 wic.lzma wic.zst \
262 container \ 270 container \
263 f2fs \ 271 f2fs \
272 erofs erofs-lz4 erofs-lz4hc \
264" 273"
265 274
266# Compression is a special case of conversion. The old variable 275# Compression is a special case of conversion. The old variable
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 25d727a010..fa7eb9da0a 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -169,6 +169,7 @@ RECIPE_MAINTAINER_pn-ell = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
169RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>" 169RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>"
170RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>" 170RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>"
171RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>" 171RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>"
172RECIPE_MAINTAINER_pn-erofs-utils = "Richard Weinberger <richard@nod.at>"
172RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>" 173RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>"
173RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>" 174RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>"
174RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>" 175RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb b/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb
new file mode 100644
index 0000000000..6435fea68c
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb
@@ -0,0 +1,21 @@
1SUMMARY = "Tools for erofs filesystems"
2LICENSE = "GPLv2+"
3SECTION = "base"
4LIC_FILES_CHKSUM = "file://COPYING;md5=94fa01670a2a8f2d3ab2de15004e0848"
5HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README"
6
7SRCREV = "d1f4953edfcf4f51c71ba91586e21fc6ce9f6db9"
8SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git"
9
10S = "${WORKDIR}/git"
11
12DEPENDS = "util-linux-libuuid"
13
14inherit pkgconfig autotools
15
16PACKAGECONFIG ??= "lz4"
17PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
18
19EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index bd3a2b97df..991e5094bb 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -930,6 +930,7 @@ DESCRIPTION
930 ext4 930 ext4
931 btrfs 931 btrfs
932 squashfs 932 squashfs
933 erofs
933 swap 934 swap
934 935
935 --fsoptions: Specifies a free-form string of options to be 936 --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 3eb669da39..7a4cc83af5 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -157,7 +157,8 @@ class KickStart():
157 part.add_argument('--fsoptions', dest='fsopts') 157 part.add_argument('--fsoptions', dest='fsopts')
158 part.add_argument('--fstype', default='vfat', 158 part.add_argument('--fstype', default='vfat',
159 choices=('ext2', 'ext3', 'ext4', 'btrfs', 159 choices=('ext2', 'ext3', 'ext4', 'btrfs',
160 'squashfs', 'vfat', 'msdos', 'swap')) 160 'squashfs', 'vfat', 'msdos', 'erofs',
161 'swap'))
161 part.add_argument('--mkfs-extraopts', default='') 162 part.add_argument('--mkfs-extraopts', default='')
162 part.add_argument('--label') 163 part.add_argument('--label')
163 part.add_argument('--use-label', action='store_true') 164 part.add_argument('--use-label', action='store_true')
@@ -229,6 +230,10 @@ class KickStart():
229 err = "%s:%d: SquashFS does not support LABEL" \ 230 err = "%s:%d: SquashFS does not support LABEL" \
230 % (confpath, lineno) 231 % (confpath, lineno)
231 raise KickStartError(err) 232 raise KickStartError(err)
233 # erofs does not support filesystem labels
234 if parsed.fstype == 'erofs' and parsed.label:
235 err = "%s:%d: erofs does not support LABEL" % (confpath, lineno)
236 raise KickStartError(err)
232 if parsed.fstype == 'msdos' or parsed.fstype == 'vfat': 237 if parsed.fstype == 'msdos' or parsed.fstype == 'vfat':
233 if parsed.fsuuid: 238 if parsed.fsuuid:
234 if parsed.fsuuid.upper().startswith('0X'): 239 if parsed.fsuuid.upper().startswith('0X'):
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index 76d144d12d..e0b2c5bdf2 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -141,9 +141,9 @@ class Partition():
141 native_sysroot) 141 native_sysroot)
142 self.source_file = "%s/fs.%s" % (cr_workdir, self.fstype) 142 self.source_file = "%s/fs.%s" % (cr_workdir, self.fstype)
143 else: 143 else:
144 if self.fstype == 'squashfs': 144 if self.fstype in ('squashfs', 'erofs'):
145 raise WicError("It's not possible to create empty squashfs " 145 raise WicError("It's not possible to create empty %s "
146 "partition '%s'" % (self.mountpoint)) 146 "partition '%s'" % (self.fstype, self.mountpoint))
147 147
148 rootfs = "%s/fs_%s.%s.%s" % (cr_workdir, self.label, 148 rootfs = "%s/fs_%s.%s.%s" % (cr_workdir, self.label,
149 self.lineno, self.fstype) 149 self.lineno, self.fstype)
@@ -369,6 +369,16 @@ class Partition():
369 (rootfs_dir, rootfs, extraopts) 369 (rootfs_dir, rootfs, extraopts)
370 exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo) 370 exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo)
371 371
372 def prepare_rootfs_erofs(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
373 native_sysroot, pseudo):
374 """
375 Prepare content for a erofs rootfs partition.
376 """
377 extraopts = self.mkfs_extraopts or ''
378 erofs_cmd = "mkfs.erofs %s -U %s %s %s" % \
379 (extraopts, self.fsuuid, rootfs, rootfs_dir)
380 exec_native_cmd(erofs_cmd, native_sysroot, pseudo=pseudo)
381
372 def prepare_empty_partition_ext(self, rootfs, oe_builddir, 382 def prepare_empty_partition_ext(self, rootfs, oe_builddir,
373 native_sysroot): 383 native_sysroot):
374 """ 384 """
diff --git a/scripts/lib/wic/plugins/source/rawcopy.py b/scripts/lib/wic/plugins/source/rawcopy.py
index 3c4997d8ba..fa7b1eb8ac 100644
--- a/scripts/lib/wic/plugins/source/rawcopy.py
+++ b/scripts/lib/wic/plugins/source/rawcopy.py
@@ -29,9 +29,9 @@ class RawCopyPlugin(SourcePlugin):
29 cmd = 'btrfs filesystem label %s %s' % (dst, label) 29 cmd = 'btrfs filesystem label %s %s' % (dst, label)
30 elif fstype == 'swap': 30 elif fstype == 'swap':
31 cmd = 'mkswap -L %s %s' % (label, dst) 31 cmd = 'mkswap -L %s %s' % (label, dst)
32 elif fstype == 'squashfs': 32 elif fstype in ('squashfs', 'erofs'):
33 raise WicError("It's not possible to update a squashfs " 33 raise WicError("It's not possible to update a %s "
34 "filesystem label '%s'" % (label)) 34 "filesystem label '%s'" % (fstype, label))
35 else: 35 else:
36 raise WicError("Cannot update filesystem label: " 36 raise WicError("Cannot update filesystem label: "
37 "Unknown fstype: '%s'" % (fstype)) 37 "Unknown fstype: '%s'" % (fstype))