diff options
-rw-r--r-- | meta/classes/image_types.bbclass | 9 | ||||
-rw-r--r-- | meta/conf/distro/include/maintainers.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb | 21 | ||||
-rw-r--r-- | scripts/lib/wic/help.py | 1 | ||||
-rw-r--r-- | scripts/lib/wic/ksparser.py | 7 | ||||
-rw-r--r-- | scripts/lib/wic/partition.py | 16 | ||||
-rw-r--r-- | scripts/lib/wic/plugins/source/rawcopy.py | 6 |
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 | |||
108 | IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo" | 108 | IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo" |
109 | IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4" | 109 | IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4" |
110 | 110 | ||
111 | IMAGE_CMD_erofs = "mkfs.erofs ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs ${IMAGE_ROOTFS}" | ||
112 | IMAGE_CMD_erofs-lz4 = "mkfs.erofs -zlz4 ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4 ${IMAGE_ROOTFS}" | ||
113 | IMAGE_CMD_erofs-lz4hc = "mkfs.erofs -zlz4hc ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4hc ${IMAGE_ROOTFS}" | ||
114 | |||
115 | |||
111 | IMAGE_CMD_TAR ?= "tar" | 116 | IMAGE_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 |
113 | IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --sort=name --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]" | 118 | IMAGE_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" | |||
243 | do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot" | 248 | do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot" |
244 | do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot" | 249 | do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot" |
245 | do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot" | 250 | do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot" |
251 | do_image_erofs[depends] += "erofs-utils-native:do_populate_sysroot" | ||
252 | do_image_erofs_lz4[depends] += "erofs-utils-native:do_populate_sysroot" | ||
253 | do_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 |
248 | IMAGE_TYPES = " \ | 256 | IMAGE_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>" | |||
169 | RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>" | 169 | RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>" |
170 | RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>" | 170 | RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>" |
171 | RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>" | 171 | RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>" |
172 | RECIPE_MAINTAINER_pn-erofs-utils = "Richard Weinberger <richard@nod.at>" | ||
172 | RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>" | 173 | RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>" |
173 | RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>" | 174 | RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>" |
174 | RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>" | 175 | RECIPE_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 @@ | |||
1 | SUMMARY = "Tools for erofs filesystems" | ||
2 | LICENSE = "GPLv2+" | ||
3 | SECTION = "base" | ||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=94fa01670a2a8f2d3ab2de15004e0848" | ||
5 | HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README" | ||
6 | |||
7 | SRCREV = "d1f4953edfcf4f51c71ba91586e21fc6ce9f6db9" | ||
8 | SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | DEPENDS = "util-linux-libuuid" | ||
13 | |||
14 | inherit pkgconfig autotools | ||
15 | |||
16 | PACKAGECONFIG ??= "lz4" | ||
17 | PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4" | ||
18 | |||
19 | EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse" | ||
20 | |||
21 | BBCLASSEXTEND = "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)) |