[yocto] KBUILD_DEFCONFIG_KMACHINE not used anywhere
Alan Martinovic
alan.martinovic at senic.com
Thu Nov 9 08:31:02 PST 2017
Sure.
The layer that will fetch all the other layers by running make:
https://github.com/getsenic/senic-os
The kernel source being used:
https://github.com/getsenic/senic-os-linux/tree/senic/4.13
Things like the KBUILD_DEFCONFIG that you are trying to use, are
> that extra level of processing that weren't needed/wanted in the
> core part.
Alrighty, think I'm getting it now.
do_kernel_configme has more processing and logic to deal with
> kernel config fragments and wasn't something that was desired to be
> imposed on all build (but I do have a streamlined version that moves
> the logic into the core class now .. that will be out for review
> shortly).
Cool, would like to see how the discussion will go.
On Thu, Nov 9, 2017 at 4:59 PM, Bruce Ashfield <bruce.ashfield at windriver.com
> wrote:
> On 11/09/2017 10:53 AM, Alan Martinovic wrote:
>
>> - what branch/release of yocto are you using ?
>>
>>
>> Morty
>>
>> - can you try just using: KBUILD_DEFCONFIG="senic_defconfig"
>>
>>
>> Yup, same error.
>>
>> .. 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.
>>
>>
>> Yup, it's in there.
>>
>>
>> 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.
>>
>>
>> Yup, am using that as a workaround .
>>
>> What is the difference between do_kernel_configme and do_configure?
>>
>
> do configure is the existing/traditional/common/simple kernel.bbclass
> way to copy a defconfig and make sure it gets into the build.
>
> do_kernel_configme has more processing and logic to deal with
> kernel config fragments and wasn't something that was desired to be
> imposed on all build (but I do have a streamlined version that moves
> the logic into the core class now .. that will be out for review
> shortly).
>
> Things like the KBUILD_DEFCONFIG that you are trying to use, are
> that extra level of processing that weren't needed/wanted in the
> core part.
>
> Not quite clear on why both exist.
>> I ask because I originally wanted to override do_configure as a fix,
>> and it seems that wouldn't have helped because it fails at
>> do_kernel_configme.
>>
>
> Are the recipes / kernel tree something I can find ? If I can just
> launch a build, I'm sure I can point out what is wrong pretty
> quickly.
>
> Bruce
>
>
>>
>> On Thu, Nov 9, 2017 at 3:13 PM, Bruce Ashfield <
>> bruce.ashfield at windriver.com <mailto:bruce.ashfield at windriver.com>>
>> wrote:
>>
>> 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> <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=$%7BKBRANCH%7D>
>> <http://github.com/TheMeaningfulEngineer/senic-os-linux.git;
>> nobranch=1;protocol=git;branch=$%7BKBRANCH%7D>
>> <http://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=$%7BKBRANCH%7D>>
>>
>> \
>> "
>>
>>
>> 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/li
>> nux-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-seni
>> c-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>
>> <mailto: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>
>> <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>>
>>
>>
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20171109/a04be227/attachment.html>
More information about the yocto
mailing list