1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 00:20:08 +00:00

selftest/devtool: Add test to verify "modify virtual/kernel"

The purpose of this test case is to verify that
devtool modify works correctly when building
the kernel.

[YOCTO #10817]

(From OE-Core rev: 0fa3d331df7d5a5fbd8431febc75efe6bcc6f96b)

Signed-off-by: Jose Perez Carranza <jose.perez.carranza@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jose Perez Carranza
2017-03-10 13:58:09 +00:00
committed by Richard Purdie
parent cc2744267f
commit b641052961
+85
View File
@@ -1606,3 +1606,88 @@ class DevtoolTests(DevtoolBase):
checkvars['S'] = '${WORKDIR}/${BPN}-%s' % recipever
checkvars['SRC_URI'] = url
self._test_recipe_contents(newrecipefile, checkvars, [])
@testcase(1577)
def test_devtool_virtual_kernel_modify(self):
"""
Summary: The purpose of this test case is to verify that
devtool modify works correctly when building
the kernel.
Dependencies: NA
Steps: 1. Build kernel with bitbake.
2. Save the config file generated.
3. Clean the environment.
4. Use `devtool modify virtual/kernel` to validate following:
4.1 The source is checked out correctly.
4.2 The resulting configuration is the same as
what was get on step 2.
4.3 The Kernel can be build correctly.
4.4 Changes made on the source are reflected on the
subsequent builds.
4.5 Changes on the configuration are reflected on the
subsequent builds
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.
"""
#Set machine to qemxu86 to be able to modify the kernel and
#verify the modification.
features = 'MACHINE = "qemux86"\n'
self.write_config(features)
# Clean up the enviroment
bitbake('linux-yocto -c cleansstate')
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
self.track_for_cleanup(tempdir)
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
self.add_command_to_tearDown('bitbake -c clean linux-yocto')
#Step 1
#Here is just generated the config file instead of all the kernel to optimize the
#time of executing this test case.
bitbake('linux-yocto -c configure')
bbconfig = os.path.join(get_bb_var('B',"linux-yocto"),'.config')
buildir= get_bb_var('TOPDIR')
#Step 2
runCmd('cp %s %s' % (bbconfig, buildir))
self.assertTrue(os.path.exists(os.path.join(buildir, '.config')),
'Could not copy .config file from kernel')
tmpconfig = os.path.join(buildir, '.config')
#Step 3
bitbake('linux-yocto -c cleanall')
#Step 4.1
runCmd('devtool modify virtual/kernel -x %s' % tempdir)
self.assertTrue(os.path.exists(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')
#Step 4.3
#NOTE: virtual/kernel is mapped to linux-yocto
result = runCmd('devtool build linux-yocto')
self.assertEqual(0,result.status,'Cannot build kernel using `devtool build`')
kernelfile = os.path.join(get_bb_var('KBUILD_OUTPUT',"linux-yocto"), 'vmlinux')
self.assertTrue(os.path.exists(kernelfile),'Kernel was not build correctly')
#Modify the kernel source, this is specific for qemux86
modfile = os.path.join(tempdir,'arch/x86/boot/header.S')
modstring = "use a boot loader - Devtool kernel testing"
modapplied = runCmd("sed -i 's/boot loader/%s/' %s" % (modstring, modfile))
self.assertEqual(0,modapplied.status,'Modification to %s on kernel source failed' % modfile)
#Modify the configuration
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)
#Build again kernel with devtool
rebuild = runCmd('devtool build linux-yocto')
self.assertEqual(0,rebuild.status,'Fail to build kernel after modification of source and config')
#Step 4.4
bzimagename = 'bzImage-' + get_bb_var('KERNEL_VERSION_NAME',"linux-yocto")
bzimagefile = os.path.join(get_bb_var('D',"linux-yocto"),'boot', bzimagename)
checkmodcode = runCmd("grep '%s' %s" % (modstring, bzimagefile))
self.assertEqual(0,checkmodcode.status,'Modification on kernel source failed')
#Step 4.5
checkmodconfg = runCmd("grep %s %s" % (modconfopt, codeconfigfile))
self.assertEqual(0,checkmodconfg.status,'Modification to configuration file failed')