[OE-core] [PATCH v3] oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source

Mohamad, Mazliana mazliana.mohamad at intel.com
Mon Aug 26 06:39:12 UTC 2019


Hi Armin,

Yes, but wait until the patch has been accepted.

Thanks & Regards,
Mazliana Mohamad

-----Original Message-----
From: akuster808 [mailto:akuster808 at gmail.com] 
Sent: Friday, August 23, 2019 8:10 PM
To: Mohamad, Mazliana <mazliana.mohamad at intel.com>; openembedded-core at lists.openembedded.org
Subject: Re: [OE-core] [PATCH v3] oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source



On 8/22/19 7:29 PM, mazliana.mohamad at intel.com wrote:
> From: Mazliana <mazliana.mohamad at intel.com>
>
> Purpose of kernel development is basically to customize our own 
> recipes kernel by reused existing recipes.
>  
> This is an initiative of automating manual kernel development test 
> cases. Applying a single patch to the Linux kernel source is one of 
> the manual test cases of kernel development.
Doesn't this allow us to remove
"kernel-dev.kernel-dev.Kernel_dev_Applying_patches" from the manual/kernel-dev.json?

- armin
>
> Objective of this test is as a developer we can make changes of a file 
> in kernel source and able to apply a single patch to the kernel 
> source.
>  
> ref:https://wiki.yoctoproject.org/wiki/Kernel_Development_Test_Cases
>
> Signed-off-by: Mazliana <mazliana.mohamad at intel.com>
> ---
>  meta/lib/oeqa/selftest/cases/kerneldevelopment.py | 67 
> +++++++++++++++++++++++
>  1 file changed, 67 insertions(+)
>  create mode 100644 meta/lib/oeqa/selftest/cases/kerneldevelopment.py
>
> diff --git a/meta/lib/oeqa/selftest/cases/kerneldevelopment.py 
> b/meta/lib/oeqa/selftest/cases/kerneldevelopment.py
> new file mode 100644
> index 0000000..a61876e
> --- /dev/null
> +++ b/meta/lib/oeqa/selftest/cases/kerneldevelopment.py
> @@ -0,0 +1,67 @@
> +import os
> +from oeqa.selftest.case import OESelftestTestCase from 
> +oeqa.utils.commands import runCmd, get_bb_var from oeqa.utils.git 
> +import GitRepo
> +
> +class KernelDev(OESelftestTestCase):
> +
> +    @classmethod
> +    def setUpClass(cls):
> +        super(KernelDev, cls).setUpClass()
> +        # Create the recipe directory structure inside the created layer
> +        cls.layername = 'meta-kerneltest'
> +        runCmd('bitbake-layers create-layer %s' % cls.layername)
> +        runCmd('mkdir -p %s/recipes-kernel/linux/linux-yocto' % cls.layername)
> +        cls.recipes_linuxyocto_dir = os.path.join \
> +            (cls.builddir, cls.layername, 'recipes-kernel', 'linux', 'linux-yocto')
> +        cls.recipeskernel_dir = os.path.dirname(cls.recipes_linuxyocto_dir)
> +        runCmd('bitbake-layers add-layer %s' % cls.layername)
> +
> +    @classmethod
> +    def tearDownClass(cls):
> +        runCmd('bitbake-layers remove-layer %s' % cls.layername, ignore_status=True)
> +        runCmd('rm -rf %s' % cls.layername)
> +        super(KernelDev, cls).tearDownClass()
> +
> +    def setUp(self):
> +        super(KernelDev, self).setUp()
> +        self.set_machine_config('MACHINE = "qemux86-64"\n')
> +
> +    def test_apply_patches(self):
> +        """
> +        Summary:     Able to apply a single patch to the Linux kernel source
> +        Expected:    The README file should exist and the patch changes should be
> +                     displayed at the end of the file.
> +        Product:     Kernel Development
> +        Author:      Yeoh Ee Peng <ee.peng.yeoh at intel.com>
> +        AutomatedBy: Mazliana Mohamad <mazliana.mohamad at intel.com>
> +        """
> +        runCmd('bitbake virtual/kernel -c patch')
> +        kernel_source = get_bb_var('STAGING_KERNEL_DIR')
> +        readme = os.path.join(kernel_source, 'README')
> +
> +        # This test step adds modified file 'README' to git and creates a
> +        # patch file '0001-KERNEL_DEV_TEST_CASE.patch' at the same location as file
> +        patch_content = 'This is a test to apply a patch to the kernel'
> +        with open(readme, 'a+') as f:
> +            f.write(patch_content)
> +        repo = GitRepo('%s' % kernel_source, is_topdir=True)
> +        repo.run_cmd('add %s' % readme)
> +        repo.run_cmd(['commit', '-m', 'KERNEL_DEV_TEST_CASE'])
> +        repo.run_cmd(['format-patch', '-1'])
> +        patch_name = '0001-KERNEL_DEV_TEST_CASE.patch'
> +        patchpath = os.path.join(kernel_source, patch_name)
> +        runCmd('mv %s %s' % (patchpath, self.recipes_linuxyocto_dir))
> +        runCmd('rm %s ' % readme)
> +        self.assertFalse(os.path.exists(readme))
> +
> +        recipe_append = os.path.join(self.recipeskernel_dir, 'linux-yocto_%.bbappend')
> +        with open(recipe_append, 'w+') as fh:
> +            fh.write('SRC_URI += "file://%s"\n' % patch_name)
> +            fh.write('FILESEXTRAPATHS_prepend := 
> + "${THISDIR}/${PN}:"')
> +
> +        runCmd('bitbake virtual/kernel -c clean')
> +        runCmd('bitbake virtual/kernel -c patch')
> +        self.assertTrue(os.path.exists(readme))
> +        result = runCmd('tail -n 1 %s' % readme)
> +        self.assertEqual(result.output, patch_content)



More information about the Openembedded-core mailing list