Sorry for the late reply, but we were discussing this patch on IRC today, and I wanted to follow up with some questions / clarifications.
On Wed, Jul 20, 2022 at 7:30 AM Jose Quaresma <quaresma.j...@gmail.com> wrote: > > The task do_compile_kernelmodules runs after the shared_workdir and > is installing some files in STAGING_KERNEL_BUILDDIR, this can races > in other recipes that depends on "virtual/kernel:do_shared_workdir" > as the STAGING_KERNEL_BUILDDIR is not fully populated when the > shared_workdir task ends. I remember considering this when we did the update of the module.lds in do_compile_kernemodules(), but we had at the time (and still do) use cases that there are no modules, so there isn't always an update to the shared_workdir Is that the race that you were seeing ? And dependent builds are seeing missing elements of it ? Or is there something else ? We also were (and also still are) concerned about making the already long kernel build dependency even longer, without a way to at least allow recipe authors that know what they are doing, to avoid the extra time required for modules to build. Which leads to one question. Tasks that do need module.lds or update it, could just use do_compile_kernelmodules() as their explicit dependency. Was that considered and did meet the need ? Admittedly doing that leaves a gap that a new developer could shoot through and cause themselves some failures or subtle mis-behaviour. > > To address this issue a new task is added in place of the previows one > so the shared_workdir will run after the do_compile_kernelmodules and > the new shared_workdir_prepare will replce of the old shared_workdir. > > Signed-off-by: Jose Quaresma <jose.quare...@foundries.io> > --- > meta/classes/kernel.bbclass | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass > index 5d2f17c3be..5558769c92 100644 > --- a/meta/classes/kernel.bbclass > +++ b/meta/classes/kernel.bbclass > @@ -504,7 +504,8 @@ do_kernel_version_sanity_check() { > exit 0 > } > > -addtask shared_workdir after do_compile before do_compile_kernelmodules > +addtask shared_workdir_prepare after do_compile before > do_compile_kernelmodules > +addtask shared_workdir after do_compile_kernelmodules Assuming that we do go for the extra compilation in the default shared_workdir dependency chain, can't we just change shared_workdir to be after do_compile_kernelmodules for a smaller footprint change ? ... unless the do_compile_kernelmodules() are using part of the shared_workdir for its build, but I don't recall that being the case. Bruce > addtask shared_workdir_setscene > > do_shared_workdir_setscene () { > @@ -520,10 +521,16 @@ emit_depmod_pkgdata() { > > PACKAGEFUNCS += "emit_depmod_pkgdata" > > -do_shared_workdir[cleandirs] += " ${STAGING_KERNEL_BUILDDIR}" > do_shared_workdir () { > cd ${B} > > + kerneldir=${STAGING_KERNEL_BUILDDIR} > +} > + > +do_shared_workdir_prepare[cleandirs] += " ${STAGING_KERNEL_BUILDDIR}" > +do_shared_workdir_prepare () { > + cd ${B} > + > kerneldir=${STAGING_KERNEL_BUILDDIR} > install -d $kerneldir > > -- > 2.37.1 > > > > -- - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#170369): https://lists.openembedded.org/g/openembedded-core/message/170369 Mute This Topic: https://lists.openembedded.org/mt/92502346/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-