summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/wic.py
diff options
context:
space:
mode:
authorPaul Barker <pbarker@konsulko.com>2020-01-08 11:25:46 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-01-10 21:18:22 +0000
commit2c814462484e51d80f354fc3a28fdfb9aa396a5e (patch)
tree31b74368572c91731e8ad58e5f2b68e1c5bc5c59 /meta/lib/oeqa/selftest/cases/wic.py
parentab6e8dae1e9e3c96cd003b21825df61f553ebdc8 (diff)
downloadpoky-2c814462484e51d80f354fc3a28fdfb9aa396a5e.tar.gz
wic: Add --include-path argument
This option adds the contents of the given path to a partition built with the rootfs source plugin. The path is relative to the directory in which wic is running not the rootfs itself so use of an absolute path is recommended. This option is most useful when multiple copies of the rootfs are added to an image and it is required to add extra content to only one of these copies. This option only has an effect with the rootfs source plugin. (From OE-Core rev: d4cd27a9837426e809190548a83c6c7c76505114) Signed-off-by: Paul Barker <pbarker@konsulko.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/wic.py')
-rw-r--r--meta/lib/oeqa/selftest/cases/wic.py73
1 files changed, 55 insertions, 18 deletions
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py
index 3c5be2f501..46cd98b193 100644
--- a/meta/lib/oeqa/selftest/cases/wic.py
+++ b/meta/lib/oeqa/selftest/cases/wic.py
@@ -44,6 +44,24 @@ def only_for_arch(archs, image='core-image-minimal'):
44 return wrapped_f 44 return wrapped_f
45 return wrapper 45 return wrapper
46 46
47def extract_files(debugfs_output):
48 """
49 extract file names from the output of debugfs -R 'ls -p',
50 which looks like this:
51
52 /2/040755/0/0/.//\n
53 /2/040755/0/0/..//\n
54 /11/040700/0/0/lost+found^M//\n
55 /12/040755/1002/1002/run//\n
56 /13/040755/1002/1002/sys//\n
57 /14/040755/1002/1002/bin//\n
58 /80/040755/1002/1002/var//\n
59 /92/040755/1002/1002/tmp//\n
60 """
61 # NOTE the occasional ^M in file names
62 return [line.split('/')[5].strip() for line in \
63 debugfs_output.strip().split('/\n')]
64
47 65
48class WicTestCase(OESelftestTestCase): 66class WicTestCase(OESelftestTestCase):
49 """Wic test class.""" 67 """Wic test class."""
@@ -393,24 +411,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
393 runCmd("dd if=%s of=%s skip=%d count=%d" % 411 runCmd("dd if=%s of=%s skip=%d count=%d" %
394 (wicimg, part_file, start, length)) 412 (wicimg, part_file, start, length))
395 413
396 def extract_files(debugfs_output):
397 """
398 extract file names from the output of debugfs -R 'ls -p',
399 which looks like this:
400
401 /2/040755/0/0/.//\n
402 /2/040755/0/0/..//\n
403 /11/040700/0/0/lost+found^M//\n
404 /12/040755/1002/1002/run//\n
405 /13/040755/1002/1002/sys//\n
406 /14/040755/1002/1002/bin//\n
407 /80/040755/1002/1002/var//\n
408 /92/040755/1002/1002/tmp//\n
409 """
410 # NOTE the occasional ^M in file names
411 return [line.split('/')[5].strip() for line in \
412 debugfs_output.strip().split('/\n')]
413
414 # Test partition 1, should contain the normal root directories, except 414 # Test partition 1, should contain the normal root directories, except
415 # /usr. 415 # /usr.
416 res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \ 416 res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \
@@ -451,6 +451,43 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
451 finally: 451 finally:
452 os.environ['PATH'] = oldpath 452 os.environ['PATH'] = oldpath
453 453
454 def test_include_path(self):
455 """Test --include-path wks option."""
456
457 oldpath = os.environ['PATH']
458 os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
459
460 try:
461 include_path = os.path.join(self.resultdir, 'test-include')
462 os.makedirs(include_path)
463 with open(os.path.join(include_path, 'test-file'), 'w') as t:
464 t.write("test\n")
465 wks_file = os.path.join(include_path, 'temp.wks')
466 with open(wks_file, 'w') as wks:
467 rootfs_dir = get_bb_var('IMAGE_ROOTFS', 'core-image-minimal')
468 wks.write("""
469part /part1 --source rootfs --ondisk mmcblk0 --fstype=ext4
470part /part2 --source rootfs --ondisk mmcblk0 --fstype=ext4 --include-path %s"""
471 % (include_path))
472 runCmd("wic create %s -e core-image-minimal -o %s" \
473 % (wks_file, self.resultdir))
474
475 part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0]
476 part2 = glob(os.path.join(self.resultdir, 'temp-*.direct.p2'))[0]
477
478 # Test partition 1, should not contain 'test-file'
479 res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1))
480 files = extract_files(res.output)
481 self.assertNotIn('test-file', files)
482
483 # Test partition 2, should not contain 'test-file'
484 res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part2))
485 files = extract_files(res.output)
486 self.assertIn('test-file', files)
487
488 finally:
489 os.environ['PATH'] = oldpath
490
454 def test_exclude_path_errors(self): 491 def test_exclude_path_errors(self):
455 """Test --exclude-path wks option error handling.""" 492 """Test --exclude-path wks option error handling."""
456 wks_file = 'temp.wks' 493 wks_file = 'temp.wks'