patch v5: added ignore_dangling_symlinks to avoid error when linux sources contain dangling symlinks
On Thu, Dec 21, 2023 at 10:49 PM Etienne Cordonnier via lists.openembedded.org <[email protected]> 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://bugzilla.yoctoproject.org/show_bug.cgi?id=15325 > <https://urldefense.proofpoint.com/v2/url?u=https-3A__bugzilla.yoctoproject.org_show-5Fbug.cgi-3Fid-3D15325&d=DwMFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=eo9dzHi2uXPV1dA2f4GoA6Y7QoDiG2TTF1R2YQ__SwnF1U1d0O2JxX3PprS_T9BN&s=e9FG4cG4GbLjCy8loEN6qVisSUax4Ngvd_Ok8TPonvY&e=> > > Tested with a recipe "my-custom-linux" which unpacks sources to a custom > ${S} directory > and ran symlink_kernsrc several times: > $ bitbake -f -c symlink_kernsrc my-custom-linux > > Signed-off-by: Etienne Cordonnier <[email protected]> > --- > meta/classes-recipe/kernel.bbclass | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/meta/classes-recipe/kernel.bbclass > b/meta/classes-recipe/kernel.bbclass > index 9ff37f5c38..45b63f1fa1 100644 > --- a/meta/classes-recipe/kernel.bbclass > +++ b/meta/classes-recipe/kernel.bbclass > @@ -189,11 +189,17 @@ python do_symlink_kernsrc () { > # drop trailing slash, so that os.symlink(kernsrc, s) doesn't > use s as > # directory name and fail > s = s[:-1] > - 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 > + # perform idempotent/reentrant copy > + s_copy = s + ".orig" > + if not os.path.isdir(s_copy): > + shutil.copytree(s, s_copy, ignore_dangling_symlinks=True) > + bb.utils.remove(s, recurse=True) > + shutil.copytree(s_copy, s, ignore_dangling_symlinks=True) > shutil.move(s, kernsrc) > os.symlink(kernsrc, s) > } > -- > 2.34.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#192851): https://lists.openembedded.org/g/openembedded-core/message/192851 Mute This Topic: https://lists.openembedded.org/mt/103308574/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
