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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to