[yocto] KBUILD_DEFCONFIG_KMACHINE not used anywhere

Bruce Ashfield bruce.ashfield at windriver.com
Thu Nov 9 06:13:55 PST 2017


On 2017-11-09 8:11 AM, Alan Martinovic wrote:
>     What is your kernel recipe ? Something you wrote, or something
>     from a vendor ?
> 
> 
> Something I inherited.
> It does seem to have been based on linux-yocto-custom.bb 
> <http://linux-yocto-custom.bb>.
> 
> 
> SECTION = "kernel"
> DESCRIPTION = "Mainline Linux kernel"
> LICENSE = "GPLv2"
> LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
> 
> COMPATIBLE_MACHINE = "(senic-hub-beta|senic-hub)"
> 
> inherit kernel
> require recipes-kernel/linux/linux-yocto.inc
> 
> KBRANCH = "senic/4.13"
> SRCREV = "e469b218af6fe7cb8c50c4395ae9f3204f8033ae"
> 
> PV = "4.13+git${SRCPV}"
> S = "${WORKDIR}/git"
> 
> KBUILD_DEFCONFIG_senic-hub-beta="senic_defconfig"
> 
> SRC_URI = 
> "git://github.com/TheMeaningfulEngineer/senic-os-linux.git;nobranch=1;protocol=git;branch=${KBRANCH} 
> <http://github.com/TheMeaningfulEngineer/senic-os-linux.git;nobranch=1;protocol=git;branch=${KBRANCH}> 
> \
>            "
> 
> 
> Running it with:
> 
> bitbake -v linux-senic
> 
> 
> It fails with:
> 
> ERROR: linux-senic-4.13+gitAUTOINC+e469b218af-r0 do_kernel_configme: 
> Could not configure senic-hub-beta-standard
> ERROR: linux-senic-4.13+gitAUTOINC+e469b218af-r0 do_kernel_configme: 
> Function failed: do_kernel_configme (log file is located at 
> /home/alan/senic-o
> s/build/tmp-glibc/work/senic_hub_beta-senic-linux-gnueabi/linux-senic/4.13+gitAUTOINC+e469b218af-r0/temp/log.do_kernel_configme.5641) 
> 
> ERROR: Logfile of failure stored in: 
> /home/alan/senic-os/build/tmp-glibc/work/senic_hub_beta-senic-linux-gnueabi/linux-senic/4.13+gitAUTOINC+e469b2
> 18af-r0/temp/log.do_kernel_configme.5641
> 
> 
> Not sure when "-standard" got appended...?

That's just part of the localversion processing in the bbclass, so
no worries there.

> A more exact error seems to be:
> 
> linux-senic-4.13+gitAUTOINC+e469b218af-r0 do_kernel_configme: + 
> configs=[ERROR]: no configuration queue found in outdir (.kernel-meta)
> 
> Could it be expecting a "linux-yocto style" with the meta branches?
> 

Nope. Well, you do need some sort of configuration available, but it
doesn't have to be in that format.

That error is indicating that no configuration was found (no defconfig
or fragments).

A couple more questions, and I can probably sort this out.

- what branch/release of yocto are you using ?
- can you try just using: KBUILD_DEFCONFIG="senic_defconfig"

For that second one, I'm wondering if the variable expansion is not
working with the machine override.

.. and finally, the KBUILD_DEFCONFIG processing is meant to pick
up in-tree defconfigs for use in the build, so whatever you reference
must bein in arch/<your arch>/configs/<kbuild defconfig> .. so make
sure that is the case with senic_defconfig.

You can always add the defconfig directly to the SRC_URI as well
(i.e. copy it into your layer and call it 'defconfig' and add it
to the SRC_URI like any other element.

Bruce

> 
> 
> 
> On Tue, Nov 7, 2017 at 6:47 PM, Bruce Ashfield 
> <bruce.ashfield at windriver.com <mailto:bruce.ashfield at windriver.com>> wrote:
> 
>     On 11/07/2017 08:46 AM, Alan Martinovic wrote:
> 
>         Hi,
>         I'm trying to get yocto to build the kernel with an in-tree
>         defconfig.
>         For that I found references to the variable
>         KBUILD_DEFCONFIG_KMACHINE.
> 
>         However, I've been experiencing that the kernel is being built with
>         some default defconfig, and not the in-tree one that came with the
>         kernel and I defined with the KBUILD_DEFCONFIG_KMACHINE.
> 
>         I've looked through all yocto sources for where the
>         KBUILD_DEFCONFIG_KMACHINE is actually used, and found it only in my
>         kernel recipe. So I decided to dissect my recipe.
> 
> 
>     What is your kernel recipe ? Something you wrote, or something
>     from a vendor ?
> 
> 
> 
>         There is a:
> 
>         inherit kernel
> 
>         in my recipe for which, besides others, defines how the kernel
>         config
>         will be selected.
>         Looking at the sources of oe/meta/classes/kernel.bbclass exposes how
>         the kernel configuration happens:
> 
>         kernel_do_configure() {
>                   # fixes extra + in /lib/modules/2.6.37+
>                   # $ scripts/setlocalversion . => +
>                   # $ make kernelversion => 2.6.37
>                   # $ make kernelrelease => 2.6.37+
>                   touch ${B}/.scmversion ${S}/.scmversion
> 
>                   if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f
>         "${B}/.config" ]; then
>                           mv "${S}/.config" "${B}/.config"
>                   fi
> 
>                   # Copy defconfig to .config if .config does not exist.
>         This allows
>                   # recipes to manage the .config themselves in
>         do_configure_prepend().
>                   if [ -f "${WORKDIR}/defconfig" ] && [ ! -f
>         "${B}/.config" ]; then
>                           cp "${WORKDIR}/defconfig" "${B}/.config"
>                   fi
> 
>                   ${KERNEL_CONFIG_COMMAND}
>         }
> 
> 
>         I'm planning a workaround by overriding the do_configure in my
>         recipe
>         to select the correct defconfig from the kernel. It does seem
>         however
>         like the KBUILD_DEFCONFIG_KMACHINE is exactly here to not have to do
>         the workarounds.
> 
>         Anyone has experiences with successfully using
>         KBUILD_DEFCONFIG_KMACHINE?
>         Is it a specific poky feature (I'm not using poky but specific open
>         embedded layers and bitbake)?
> 
>     That is a feature of kernel-yocto, so if your recipe is inheriting
>     kernel-yocto you can use what you are looking for.
> 
>     But note, in the documentation you are referencing you have to replace
>     KMACHINE with your actual machine .. not use the string KMACHINE.
> 
>     i.e. in your recipe (or bbappend)
> 
>     # for cases where the KMACHINE (KERNEL MACHINE) and bitbake
>     # machine match, just do this:
>     KMACHINE=$MACHINE
> 
>     KBUILD_DEFCONFIG_${KMACHINE}="your defconfig"
> 
>     i.e. it is just a standard bitbake variable with a machine OVERRIDE
>     to make it specific to the machine you are building.
> 
>     Bruce
> 
> 
> 
>         Be Well,
>         Alan
> 
>         Ref.
>         https://www.yoctoproject.org/docs/2.2/kernel-dev/kernel-dev.html#using-an-in-tree-defconfig-file
>         <https://www.yoctoproject.org/docs/2.2/kernel-dev/kernel-dev.html#using-an-in-tree-defconfig-file>
> 
> 
> 




More information about the yocto mailing list