oeqa/selftest: generalise test_devtool_virtual_kernel_modify

Generalise this test so that it works on more than qemux86-64:

- Don't edit a file in arch/x86 to cause a rebuild, instead use init/
- Look for the edits in the build tree, as the deployed kernel could be
  of any type (zImage/bzImage/etc) and edits may be in the compressed
  part.

Also remove redundant checks on the result of runCmd(), as this will
raise AssertionError exceptions itself so the explicit asserts will
never trigger.

(From OE-Core rev: f1d2b2ec51f748a28d1bca6615558d553876e5c3)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton
2022-03-31 19:29:15 +01:00
committed by Richard Purdie
parent c4436040eb
commit 9bcf56e6e7

View File

@@ -1875,8 +1875,9 @@ class DevtoolUpgradeTests(DevtoolBase):
Expected: devtool modify is able to checkout the source of the kernel
and modification to the source and configurations are reflected
when building the kernel.
"""
kernel_provider = get_bb_var('PREFERRED_PROVIDER_virtual/kernel')
"""
kernel_provider = self.td['PREFERRED_PROVIDER_virtual/kernel']
# Clean up the environment
bitbake('%s -c clean' % kernel_provider)
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
@@ -1903,33 +1904,28 @@ class DevtoolUpgradeTests(DevtoolBase):
self.assertExists(os.path.join(tempdir, 'Makefile'), 'Extracted source could not be found')
#Step 4.2
configfile = os.path.join(tempdir,'.config')
diff = runCmd('diff %s %s' % (tmpconfig, configfile))
self.assertEqual(0,diff.status,'Kernel .config file is not the same using bitbake and devtool')
runCmd('diff %s %s' % (tmpconfig, configfile))
#Step 4.3
#NOTE: virtual/kernel is mapped to kernel_provider
result = runCmd('devtool build %s' % kernel_provider)
self.assertEqual(0,result.status,'Cannot build kernel using `devtool build`')
runCmd('devtool build %s' % kernel_provider)
kernelfile = os.path.join(get_bb_var('KBUILD_OUTPUT', kernel_provider), 'vmlinux')
self.assertExists(kernelfile, 'Kernel was not build correctly')
#Modify the kernel source
modfile = os.path.join(tempdir,'arch/x86/boot/header.S')
modstring = "Use a boot loader. Devtool testing."
modapplied = runCmd("sed -i 's/Use a boot loader./%s/' %s" % (modstring, modfile))
self.assertEqual(0,modapplied.status,'Modification to %s on kernel source failed' % modfile)
modfile = os.path.join(tempdir, 'init/version.c')
runCmd("sed -i 's/Linux/LiNuX/g' %s" % (modfile))
#Modify the configuration
codeconfigfile = os.path.join(tempdir,'.config.new')
codeconfigfile = os.path.join(tempdir, '.config.new')
modconfopt = "CONFIG_SG_POOL=n"
modconf = runCmd("sed -i 's/CONFIG_SG_POOL=y/%s/' %s" % (modconfopt, codeconfigfile))
self.assertEqual(0,modconf.status,'Modification to %s failed' % codeconfigfile)
runCmd("sed -i 's/CONFIG_SG_POOL=y/%s/' %s" % (modconfopt, codeconfigfile))
#Build again kernel with devtool
rebuild = runCmd('devtool build %s' % kernel_provider)
self.assertEqual(0,rebuild.status,'Fail to build kernel after modification of source and config')
runCmd('devtool build %s' % kernel_provider)
#Step 4.4
bzimagename = 'bzImage-' + get_bb_var('KERNEL_VERSION_NAME', kernel_provider)
bzimagefile = os.path.join(get_bb_var('D', kernel_provider),'boot', bzimagename)
checkmodcode = runCmd("grep '%s' %s" % (modstring, bzimagefile))
self.assertEqual(0,checkmodcode.status,'Modification on kernel source failed')
runCmd("grep '%s' %s" % ('LiNuX', kernelfile))
#Step 4.5
checkmodconfg = runCmd("grep %s %s" % (modconfopt, codeconfigfile))
self.assertEqual(0,checkmodconfg.status,'Modification to configuration file failed')
runCmd("grep %s %s" % (modconfopt, codeconfigfile))