#11709: Implemented --mkfs-extraopts
cover #11709: Implemented --mkfs-extraopts
Hi,
This patchset implements new wks option --mkfs-extraopts, updates documentation and adds test case for it to the wic oe-selftest test suite.
The following changes since commit 302b7497f94a37ccc65541ac6973251969c0ba77:
live-vm-common: add MKDOSFS_EXTRAOPTS variable (2017-07-06 11:38:36 +0300)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib ed/wip
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ed/wip
Ed Bartosh (3):
wic: implement wks option --mkfs-extraopts
wic: add description of --mkfs-extraopts
oe-selftest: wic: add test_mkfs_extraopts test case
meta/lib/oeqa/selftest/cases/wic.py | 19 ++++++++++++++++++ scripts/lib/wic/help.py | 6 ++++++ scripts/lib/wic/ksparser.py | 1 + scripts/lib/wic/partition.py | 39 +++++++++++++++++++++++-------------- 4 files changed, 50 insertions(+), 15 deletions(-)
--
Regards,
Ed
PATCH 1/3 wic: implement wks option --mkfs-extraopts
This option specifies extra options to pass to mkfs.<fstype> utilities.
[YOCTO #11709]
--- scripts/lib/wic/ksparser.py | 1 + scripts/lib/wic/partition.py | 39 ++++++++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 15 deletions(-)
scripts/lib/wic/ksparser.py +1 -0
@@ -139,6 +139,7 @@ class KickStart(): part.add_argument('--fstype', default='vfat', choices=('ext2', 'ext3', 'ext4', 'btrfs', 'squashfs', 'vfat', 'msdos', 'swap')) + part.add_argument('--mkfs-extraopts', default='') part.add_argument('--label') part.add_argument('--no-table', action='store_true') part.add_argument('--ondisk', '--ondrive', dest='disk', default='sda')
scripts/lib/wic/partition.py +24 -15
@@ -46,6 +46,7 @@ class Partition(): self.fsopts = args.fsopts self.fstype = args.fstype self.label = args.label + self.mkfs_extraopts = args.mkfs_extraopts self.mountpoint = args.mountpoint self.no_table = args.no_table self.num = None
@@ -256,14 +257,14 @@ class Partition(): with open(rootfs, 'w') as sparse: os.ftruncate(sparse.fileno(), rootfs_size * 1024) - extra_imagecmd = "-i 8192" + extraopts = self.mkfs_extraopts or "-F -i 8192" label_str = "" if self.label: label_str = "-L %s" % self.label - mkfs_cmd = "mkfs.%s -F %s %s %s -d %s" % \ - (self.fstype, extra_imagecmd, rootfs, label_str, rootfs_dir) + mkfs_cmd = "mkfs.%s %s %s %s -d %s" % \ + (self.fstype, extraopts, rootfs, label_str, rootfs_dir) exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo) mkfs_cmd = "fsck.%s -pvfD %s" % (self.fstype, rootfs)
@@ -289,8 +290,9 @@ class Partition(): if self.label: label_str = "-L %s" % self.label - mkfs_cmd = "mkfs.%s -b %d -r %s %s %s" % \ - (self.fstype, rootfs_size * 1024, rootfs_dir, label_str, rootfs) + mkfs_cmd = "mkfs.%s -b %d -r %s %s %s %s" % \ + (self.fstype, rootfs_size * 1024, rootfs_dir, label_str, + self.mkfs_extraopts, rootfs) exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo) def prepare_rootfs_msdos(self, rootfs, oe_builddir, rootfs_dir,
@@ -312,8 +314,10 @@ class Partition(): if self.fstype == 'msdos': size_str = "-F 16" # FAT 16 - dosfs_cmd = "mkdosfs %s -S 512 %s -C %s %d" % (label_str, size_str, - rootfs, rootfs_size) + extraopts = self.mkfs_extraopts or '-S 512' + + dosfs_cmd = "mkdosfs %s %s %s -C %s %d" % \ + (label_str, size_str, extraopts, rootfs, rootfs_size) exec_native_cmd(dosfs_cmd, native_sysroot) mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, rootfs_dir)
@@ -329,8 +333,9 @@ class Partition(): """ Prepare content for a squashfs rootfs partition. """ - squashfs_cmd = "mksquashfs %s %s -noappend" % \ - (rootfs_dir, rootfs) + extraopts = self.mkfs_extraopts or '-noappend' + squashfs_cmd = "mksquashfs %s %s %s" % \ + (rootfs_dir, rootfs, extraopts) exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo) def prepare_empty_partition_ext(self, rootfs, oe_builddir,
@@ -342,14 +347,14 @@ class Partition(): with open(rootfs, 'w') as sparse: os.ftruncate(sparse.fileno(), size * 1024) - extra_imagecmd = "-i 8192" + extraopts = self.mkfs_extraopts or "-i 8192" label_str = "" if self.label: label_str = "-L %s" % self.label mkfs_cmd = "mkfs.%s -F %s %s %s" % \ - (self.fstype, extra_imagecmd, label_str, rootfs) + (self.fstype, extraopts, label_str, rootfs) exec_native_cmd(mkfs_cmd, native_sysroot) def prepare_empty_partition_btrfs(self, rootfs, oe_builddir,
@@ -365,8 +370,9 @@ class Partition(): if self.label: label_str = "-L %s" % self.label - mkfs_cmd = "mkfs.%s -b %d %s %s" % \ - (self.fstype, self.size * 1024, label_str, rootfs) + mkfs_cmd = "mkfs.%s -b %d %s %s %s" % \ + (self.fstype, self.size * 1024, label_str, + self.mkfs_extraopts, rootfs) exec_native_cmd(mkfs_cmd, native_sysroot) def prepare_empty_partition_msdos(self, rootfs, oe_builddir,
@@ -384,8 +390,11 @@ class Partition(): if self.fstype == 'msdos': size_str = "-F 16" # FAT 16 - dosfs_cmd = "mkdosfs %s -S 512 %s -C %s %d" % (label_str, size_str, - rootfs, blocks) + extraopts = self.mkfs_extraopts or '-S 512' + + dosfs_cmd = "mkdosfs %s %s %s -C %s %d" % \ + (label_str, extraopts, size_str, rootfs, blocks) + exec_native_cmd(dosfs_cmd, native_sysroot) chmod_cmd = "chmod 644 %s" % rootfs
Signature · 1 line
2.1.4
PATCH 2/3 wic: add description of --mkfs-extraopts
In reply to Ed BartoshUpdated help contents with the description of new
wks option --mkfs-extraopts
--- scripts/lib/wic/help.py | 6 ++++++ 1 file changed, 6 insertions(+)
scripts/lib/wic/help.py +6 -0
@@ -943,6 +943,12 @@ DESCRIPTION for the harware that requires non-default partition system ids. The parameter in one byte long hex number either with 0x prefix or without it. + --mkfs-extraopts: This option specifies extra options to pass to mkfs utility. + NOTE, that wic uses default options for some filesystems, for example + '-S 512' for mkfs.fat or '-F -i 8192' for mkfs.ext. Those options will + not take effect when --mkfs-extraopts is used. This should be taken into + account when using --mkfs-extraopts. + * bootloader This command allows the user to specify various bootloader
Signature · 1 line
2.1.4
PATCH 3/3 oe-selftest: wic: add test_mkfs_extraopts test case
In reply to Ed BartoshTest new wks option --mkfs-extraopts with all filesystems supported by wic.
--- meta/lib/oeqa/selftest/cases/wic.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
meta/lib/oeqa/selftest/cases/wic.py +19 -0
@@ -949,3 +949,22 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r status, output = qemu.run_serial(cmd) self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) self.assertEqual(output, '2') + + def test_mkfs_extraopts(self): + """Test wks option --mkfs-extraopts for empty and not empty partitions""" + img = 'core-image-minimal' + with NamedTemporaryFile("w", suffix=".wks") as wks: + 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 "--mixed -K"\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', + 'part emptyext2 --fstype ext2 --size 1M --mkfs-extraopts "-D -F -i 8192"\n', + 'part emptybtrfs --fstype btrfs --size 100M --mkfs-extraopts "--mixed -K"\n']) + wks.flush() + cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir) + self.assertEqual(0, runCmd(cmd).status) + wksname = os.path.splitext(os.path.basename(wks.name))[0] + out = glob(self.resultdir + "%s-*direct" % wksname) + self.assertEqual(1, len(out))
Signature · 1 line
2.1.4
✗ patchtest: failure for #11709: Implemented --mkfs-extraopts
In reply to Ed Bartosh== Series Details ==
Series: #11709: Implemented --mkfs-extraopts
Revision: 1
URL : https://patchwork.openembedded.org/series/7600/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at de79149545)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe