[OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
Paul Barker
paul at betafive.co.uk
Sat Mar 9 22:09:59 UTC 2019
On 06/03/2019 16:37, bruce.ashfield at gmail.com wrote:
> From: Bruce Ashfield <bruce.ashfield at gmail.com>
>
> For testing purposes, it is often easier to patch a fragment
> in a kernel-meta repository versus needing to make a copy or
> modify the source repository.
>
> We can allow this sort of patching when a patchdir of kernel-meta
> is passed (to indicate the nested kernel-meta repository).
>
> Also note that we must patch the meta data before they are
> processed/gathered, since migrated copies to the kernel source
> directory will be used later.
>
> Signed-off-by: Bruce Ashfield <bruce.ashfield at gmail.com>
> ---
> meta/classes/kernel-yocto.bbclass | 29 +++++++++++++++++++++++++----
> 1 file changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
> index 496c8a7f68..d2b194dd55 100644
> --- a/meta/classes/kernel-yocto.bbclass
> +++ b/meta/classes/kernel-yocto.bbclass
> @@ -5,12 +5,21 @@ PATCH_GIT_USER_NAME ?= "OpenEmbedded"
>
> # returns local (absolute) path names for all valid patches in the
> # src_uri
> -def find_patches(d):
> +def find_patches(d,subdir):
> patches = src_patches(d)
> patch_list=[]
> for p in patches:
> - _, _, local, _, _, _ = bb.fetch.decodeurl(p)
> - patch_list.append(local)
> + _, _, local, _, _, parm = bb.fetch.decodeurl(p)
> + # if patchdir has been passed, we won't be able to apply it so skip
> + # the patch for now, and special processing happens later
> + patchdir = ''
> + if "patchdir" in parm:
> + patchdir = parm["patchdir"]
> + if patchdir:
Did you mean 'if subdir:' here?
I'm seeing duplicate attempts to apply a patch listed on SRC_URI in the
linux-raspberrypi_4.14.bb recipe from meta-raspberrypi. The first
attempt is in do_kernel_metadata and this succeeds, the second is in
do_patch and this fails as the patch has already been applied.
In this case, patchdir = '' as there is no patchdir set for this in the
recipe. The patch is still picked up when find_patches() is called with
subdir='kernel-meta' since the test here is false and the comparison
below is not performed.
> + if subdir == patchdir:
> + patch_list.append(local)
> + else:
> + patch_list.append(local)
>
> return patch_list
>
> @@ -119,8 +128,20 @@ do_kernel_metadata() {
> fi
> fi
>
> + # was anyone trying to patch the kernel meta data ?, we need to do
> + # this here, since the scc commands migrate the .cfg fragments to the
> + # kernel source tree, where they'll be used later.
> + check_git_config
> + patches="${@" ".join(find_patches(d,'kernel-meta'))}"
> + for p in $patches; do
> + (
> + cd ${WORKDIR}/kernel-meta
> + git am -s $p
> + )
> + done
> +
> sccs_from_src_uri="${@" ".join(find_sccs(d))}"
> - patches="${@" ".join(find_patches(d))}"
> + patches="${@" ".join(find_patches(d,''))}"
> feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}"
>
> # a quick check to make sure we don't have duplicate defconfigs
>
--
Paul Barker
Beta Five Ltd
More information about the Openembedded-core
mailing list