From: Luca Ceresoli <luca.ceres...@bootlin.com> Writing a simple recipe that inherits kernel.bbclass and downloads a kernel tarball (e.g. a mainline release from kernel.org) via http or ftp fails with either:
ERROR: linux-acme-6.3.3-r0 do_configure: oe_runmake failed ... | make: *** No rule to make target 'oldnoconfig'. Stop. or (seen on a different setup, based on kirkstone): ... do_populate_lic: QA Issue: ... LIC_FILES_CHKSUM points to an invalid file: .../work-shared/.../kernel-source/COPYING [license-checksum] This happens when not setting S in the recipe. In this case, kernel.bbclass sets it to ${STAGING_KERNEL_DIR} (${TMPDIR}/work-shared/${MACHINE}/kernel-source). This means that in do_symlink_kernsrc(), the 'if s != kernsrc' never triggers and thus the kernel tree will not me moved into work/shared, which results in an empty work-shared/.../kernel-source directory. When downloading a tarball it is usually not required to set S in recipes, so this is not obvious here and the error message does not point to the problem or its solution. There is such a check in kernel-yocto.bbclass though, so move it to kernel.bbclass so that also kernel recipes not based on kernel-yocto can benefit from it. The check is moved: - from the beginning of do_kernel_checkout() in kernel-yocto - to the end of do_symlink_kernsrc() in kernel.bbclass and since do_kernel_checkout is executed 'after do_symlink_kernsrc', the code flow does not change in a relevant way when using linux-yocto. Signed-off-by: Luca Ceresoli <luca.ceres...@bootlin.com> --- meta/classes-recipe/kernel-yocto.bbclass | 8 -------- meta/classes-recipe/kernel.bbclass | 6 ++++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass index 108b7e675212..ceb451b69969 100644 --- a/meta/classes-recipe/kernel-yocto.bbclass +++ b/meta/classes-recipe/kernel-yocto.bbclass @@ -394,16 +394,8 @@ do_kernel_checkout() { # case: we have no git repository at all. # To support low bandwidth options for building the kernel, we'll just # convert the tree to a git repo and let the rest of the process work unchanged - - # if ${S} hasn't been set to the proper subdirectory a default of "linux" is - # used, but we can't initialize that empty directory. So check it and throw a - # clear error cd ${S} - if [ ! -f "Makefile" ]; then - bberror "S is not set to the linux source directory. Check " - bbfatal "the recipe and set S to the proper extracted subdirectory" - fi rm -f .gitignore git init check_git_config diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index 9c8036f4df01..5ed4a2e03c72 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -195,6 +195,12 @@ python do_symlink_kernsrc () { import shutil shutil.move(s, kernsrc) os.symlink(kernsrc, s) + + # When not using git, we cannot figure out automatically the extracted + # directory. So check it and throw a clear error. + if not os.path.isdir(os.path.join(d.getVar("WORKDIR"), "git")) and \ + not os.path.exists(os.path.join(s, "Makefile")): + bb.fatal("S is not set to the linux source directory. Check the recipe and set S to the proper extracted subdirectory.") } # do_patch is normally ordered before do_configure, but # externalsrc.bbclass deletes do_patch, breaking the dependency of -- 2.34.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#182385): https://lists.openembedded.org/g/openembedded-core/message/182385 Mute This Topic: https://lists.openembedded.org/mt/99341197/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-