On Sun, Mar 10, 2019 at 11:14 PM Bruce Ashfield <bruce.ashfi...@gmail.com> wrote: > > On Sun, Mar 10, 2019 at 10:35 PM Bruce Ashfield > <bruce.ashfi...@gmail.com> wrote: > > > > On Sat, Mar 9, 2019 at 5:10 PM Paul Barker <p...@betafive.co.uk> wrote: > > > > > > On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: > > > > From: Bruce Ashfield <bruce.ashfi...@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.ashfi...@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 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core