From: akuster808 <akuster808@gmail.com>
To: mazliana.mohamad@intel.com, openembedded-core@lists.openembedded.org
Subject: Re: [PATCH v3] oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source
Date: Fri, 23 Aug 2019 05:10:14 -0700 [thread overview]
Message-ID: <95f19318-907d-059a-ce22-b833bffbd429@gmail.com> (raw)
In-Reply-To: <1566527358-49642-1-git-send-email-mazliana.mohamad@intel.com>
On 8/22/19 7:29 PM, mazliana.mohamad@intel.com wrote:
> From: Mazliana <mazliana.mohamad@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@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@intel.com>
> + AutomatedBy: Mazliana Mohamad <mazliana.mohamad@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)
next prev parent reply other threads:[~2019-08-23 12:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-23 2:29 [PATCH v3] oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source mazliana.mohamad
2019-08-23 8:02 ` ✗ patchtest: failure for oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source (rev3) Patchwork
2019-08-23 12:10 ` akuster808 [this message]
2019-08-26 6:39 ` [PATCH v3] oeqa/kerneldevelopment: Able to apply a single patch to the Linux kernel source Mohamad, Mazliana
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=95f19318-907d-059a-ce22-b833bffbd429@gmail.com \
--to=akuster808@gmail.com \
--cc=mazliana.mohamad@intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox