On Mon, Dec 18, 2023 at 6:45 AM Etienne Cordonnier via
lists.openembedded.org <[email protected]>
wrote:
>
> My thinking was that in my local build I was updating from a build without 
> https://github.com/yoctoproject/poky/commit/3b8d0acca30c806fb69fc3096d41593cc76ed22c
>  to a build containing this commit, so the behavior of do_symlink_kernsrc got 
> modified, but my incremental build is not executing the new version of the 
> code since it detects that the symlink already exists and then the rest of 
> the function gets skipped, so I thought this justified a warning.
>
> I'll lower the warning to info, but then this assumes that we will never 
> modify do_symlink_kernsrc in a way which is not backwards-compatible.
>
> @Richard: the reason I didn't go for the copy to "orig" is that I don't see a 
> way to add this without breaking incremental builds (where s is a symlink to 
> kernsrc which is potentially modified already by do_patch etc.). However I 
> think it would be a cleaner solution than simply skipping the code like I did:

If the only way to trigger the issue is through really rare pre-<some
commit> to post
that commit that happens to modify the detection/manipulation/other of S and the
symlink, then it is rare enough to just drop an info message breadcrumb and keep
moving.

But if it really is a rare situation like you ran into, or some sort
of forced execution
of the task, I don't think that a copy would be an unexpected thing to happen.

Bruce

>
> -        if d.getVar("EXTERNALSRC"):
> +        if d.getVar("EXTERNALSRC") and not os.path.islink(s):
>              # With EXTERNALSRC S will not be wiped so we can symlink to it
>              os.symlink(s, kernsrc)
>          else:
>              import shutil
> +            s_copy = s + ".orig"
> +            if not os.path.isdir(s_copy):
> +                shutil.copytree(s, s_copy)
> +            bb.utils.remove(s, recurse=True)
> +            shutil.copytree(s_copy, s)
>
> Etienne
>
>
> On Sun, Dec 17, 2023 at 8:52 PM Richard Purdie 
> <[email protected]> wrote:
>>
>> On Sat, 2023-12-16 at 14:53 +0100, Etienne Cordonnier via
>> lists.openembedded.org wrote:
>> > From: Etienne Cordonnier <[email protected]>
>> >
>> > The function do_symlink_kernsrc is not reentrant in the case where S is 
>> > defined
>> > to a non-default value. This causes build-failures e.g. when building 
>> > linux-yocto, then updating
>> > poky to a commit which modifies kernel.bbclass, and then building 
>> > linux-yocto again.
>> >
>> > Bugzilla: 
>> > https://urldefense.proofpoint.com/v2/url?u=https-3A__bugzilla.yoctoproject.org_show-5Fbug.cgi-3Fid-3D15325&d=DwIFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=qcRut2Wm9dH26YP_YovPl6QVczLOYUxs1xfzA75ZJBiHj4dWwxbAS-2JjGPlyiyS&s=_WTBsDroHfmiIIyCOXRV2CAId9PmKZ4sN3bRO3EOcyU&e=
>> >
>> > Signed-off-by: Etienne Cordonnier <[email protected]>
>> > ---
>> >  meta/classes-recipe/kernel.bbclass | 5 +++++
>> >  1 file changed, 5 insertions(+)
>> >
>> > diff --git a/meta/classes-recipe/kernel.bbclass 
>> > b/meta/classes-recipe/kernel.bbclass
>> > index 9ff37f5c38..130bedd901 100644
>> > --- a/meta/classes-recipe/kernel.bbclass
>> > +++ b/meta/classes-recipe/kernel.bbclass
>> > @@ -194,6 +194,11 @@ python do_symlink_kernsrc () {
>> >              os.symlink(s, kernsrc)
>> >          else:
>> >              import shutil
>> > +            if os.path.islink(s):
>> > +                # this happens for instance when a poky update forces 
>> > symlink_kernsrc to run again
>> > +                # after s was already moved to kernsrc
>> > +                bb.warn("%s is already a symlink! Not symlinking kernel 
>> > sources" % s)
>> > +                return 0
>> >              shutil.move(s, kernsrc)
>> >              os.symlink(kernsrc, s)
>> >  }
>>
>> Usually what we recommend is that the first pass does something if "if
>> not exists X.org; cp X X.orig; fi", then you can always copy from
>> X.orig.
>>
>> As Bruce says, it definitely shouldn't be a warning, this can happen
>> quite normally.
>>
>> Cheers,
>>
>> Richard
>
>
> 
>


--
- 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 (#192644): 
https://lists.openembedded.org/g/openembedded-core/message/192644
Mute This Topic: https://lists.openembedded.org/mt/103208527/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to