Re: [OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
On Mon, Mar 11, 2019 at 12:01 AM Bruce Ashfield wrote: > > On Sun, Mar 10, 2019 at 11:14 PM Bruce Ashfield > wrote: > > > > On Sun, Mar 10, 2019 at 10:35 PM Bruce Ashfield > > wrote: > > > > > > On Sat, Mar 9, 2019 at 5:10 PM Paul Barker wrote: > > > > > > > > On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: > > > > > From: Bruce Ashfield > > > > > > > > > > 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 > > > > > --- > > > > > 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 ? Never mind. I was carrying a local patch that was causing an issue .. this is why you shouldn't try and work quickly while in a non-optimimal environment. I have the kernel patching here. For now, I'll send patch that follows your original suggestion and I'll revisit the other workflows later. Bruce > > 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: > > > > >
Re: [OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
On Sun, Mar 10, 2019 at 11:14 PM Bruce Ashfield wrote: > > On Sun, Mar 10, 2019 at 10:35 PM Bruce Ashfield > wrote: > > > > On Sat, Mar 9, 2019 at 5:10 PM Paul Barker wrote: > > > > > > On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: > > > > From: Bruce Ashfield > > > > > > > > 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 > > > > --- > > > > 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 > > > > + ( > > >
Re: [OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
On Sun, Mar 10, 2019 at 10:35 PM Bruce Ashfield wrote: > > On Sat, Mar 9, 2019 at 5:10 PM Paul Barker wrote: > > > > On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: > > > From: Bruce Ashfield > > > > > > 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 > > > --- > > > 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 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
Re: [OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
On Sat, Mar 9, 2019 at 5:10 PM Paul Barker wrote: > > On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: > > From: Bruce Ashfield > > > > 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 > > --- > > 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. 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 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
On 06/03/2019 16:37, bruce.ashfi...@gmail.com wrote: From: Bruce Ashfield 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 --- 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 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH 1/6] kernel-yocto: allow kernel-meta repositories to be patched
From: Bruce Ashfield 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 --- 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: +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 -- 2.19.1 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core