According to the comment in do_symlink_kernsrc, this function exists for compatibility with old style kernel recipes:
# Old style kernels may set ${S} = ${WORKDIR}/git for example For such recipes S will always be different from STAGING_KERNEL_DIR. This is fine for the first build or when unpack is rerun because new sources are in S. However the following command breaks the build: bitbake -C do_symlink_kernsrc virtual/kernel At this point, S is a symlink to STAGING_KERNEL_DIR, (meaning S != STAGING_KERNEL_DIR). We first remove the contents of STAGING_KERNEL_DIR without removing the folder itself causing us to lose kernel sources. Then we create a symlink from S to STAGING_KERNEL_DIR which results in the following broken symlinks: ${WORKDIR}/git -> <...>/build/tmp/work-shared/<machine>/kernel-source kernel-source -> <...>/build/tmp/work-shared/<machine>/kernel-source The build fails with the following error: ERROR: <linux_recipe> do_kernel_checkout: FileExistsError(17, 'File exists') ERROR: Task (<linux_recipe>:do_kernel_checkout) failed with exit code '1' Attempting to access the kernel-source directory results in: ls: cannot access 'kernel-source': Too many levels of symbolic links Fix this by checking if S is a symlink, and if so, verifying whether the symlink points to STAGING_KERNEL_DIR to avoid losing sources Signed-off-by: Julien Stephan <jstep...@baylibre.com> --- meta/classes-recipe/kernel.bbclass | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index 89badd90f18..e328151cb59 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -184,7 +184,12 @@ do_clean[cleandirs] += " ${S} ${STAGING_KERNEL_DIR} ${B} ${STAGING_KERNEL_BUILDD python do_symlink_kernsrc () { s = d.getVar("S") kernsrc = d.getVar("STAGING_KERNEL_DIR") - if s != kernsrc: + if os.path.islink(s): + _s = os.readlink(s) + else: + _s = s + + if _s != kernsrc: bb.utils.mkdirhier(kernsrc) bb.utils.remove(kernsrc, recurse=True) if s[-1] == '/': -- 2.45.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#201601): https://lists.openembedded.org/g/openembedded-core/message/201601 Mute This Topic: https://lists.openembedded.org/mt/107052142/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-