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
<[email protected] <mailto:[email protected]>> 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>
--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto