[OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched

Bruce Ashfield bruce.ashfield at gmail.com
Mon Mar 11 04:01:31 UTC 2019


On Sun, Mar 10, 2019 at 11:14 PM Bruce Ashfield
<bruce.ashfield at gmail.com> wrote:
>
> On Sun, Mar 10, 2019 at 10:35 PM Bruce Ashfield
> <bruce.ashfield at gmail.com> wrote:
> >
> > On Sat, Mar 9, 2019 at 5:10 PM Paul Barker <paul at betafive.co.uk> wrote:
> > >
> > > 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?
> >
> > Nope. I did mean if patchdir: here, that doesn't mean it is working perfectly,
> > but I did definitely mean patchdir.
> >
> > >
> > > 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.
> >
> > Hmm. The only thing that should be patchable in the meta data
> > gathering is the meta data. Not the kernel source tree. It is just
> > there as a rough debug / devel trigger. kernel-meta is a separate
> > repo, so patches are only applied there.
> >
> > Something that triggers in do_patch can't be patching that same
> > repo, since the kernel tree is separate ..
> >
> > Is the raspberrypi recipe using the upstream kernel-cache repo
> > or is it doing something else ?
> >
> > Is it also using patches with patchdir specified in the src_uri ?
> > If it isn't, I can't see how any of this is triggering.
> >
> > I'm out of the office this week, but this is something I can sort
> > out .. can you send me the exact set of layers (and any
> > local.conf I'd need) to trigger this ? I'll have some time tomorrow
> > night to poke at it a bit.
>
> I just did a build with meta-raspberrypi and did recreate the issue,
> I'll have a look at see what I can do. I'll need to test some other
> use cases against any changes I make, so it'll be a bit touchy :P

On a closer look, yes, it is safer to just have the test on subdir versus
some other compound conditions that I was using.

That being said, even with that fixed, I'm not able to complete the
patch process for the linux-raspberrypi kernel, I'm seeing and error
in do_patch itself, and it doesn't look related to the change in
question.

Are you seeing something similar ?

Bruce

>
> Bruce
>
> >
> > Bruce
> >
> > >
> > > 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
> >
> >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > thee at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
>
>
>
> --
> - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end
> - "Use the force Harry" - Gandalf, Star Trek II



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


More information about the Openembedded-core mailing list