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