meta-virtualization/recipes-kernel/linux/linux-yocto_virtualization.inc
Bruce Ashfield 54480c55be kernel: simplify the kernel-cfg-fragments-native dependency
The routine calculating the -native depdenency for configuration
fragments had issues with variations in kernel PV definitions.

To avoid making the routine even more complex, this commit switches
to using the same variables that include the correct virtualization
include file. This way, if bitbake has located and included the
file that adds the -native dependency, we know that the variables
will find the correct recipe.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-10-03 01:28:52 +00:00

73 lines
3.5 KiB
C++

FILESEXTRAPATHS:prepend := "${THISDIR}/linux-yocto:"
KERNEL_FEATURES:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'kvm', ' features/kvm/qemu-kvm-enable.scc', '', d)}"
KERNEL_MODULE_AUTOLOAD += "nf_conntrack_ipv6 openvswitch"
KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm', '', d)}"
# aufs kernel support required for xen-image-minimal
KERNEL_FEATURES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}"
# Always add a local/layer fragment for easy debug and enabling of options
SRC_URI += "file://extra-configs.cfg"
# if the kernel-yocto meta-data routine automatically starts to add the
# recipe-sysroot-native, we can do away with this conditional, since all
# features will be found at the same relative offset from a search
# directory
def kernel_cache_cond_feature(src_uri,feature):
import re
kernel_cache = re.search("kernel-cache", src_uri )
if kernel_cache:
return feature
return "../../recipe-sysroot-native/kcfg/" + feature
# no conditional, just use the yocto-kernel-cache addition, yes
# the src_uri isn't used, but we may need to check it in the future
def kernel_cache_feature(src_uri,feature):
return "../../recipe-sysroot-native/kcfg/" + feature
def distro_cond_feature(feature_fragment,distro_feature,d):
import bb
feat = kernel_cache_feature("",feature_fragment)
return bb.utils.contains('DISTRO_FEATURES', distro_feature, ' ' + feat, ' ', d)
# kept as a reference if we go back to a dynamically calculated
# fragment dependency.
def kernel_meta_ver_depends(d):
yocto_enabled = bb.data.inherits_class('kernel-yocto', d)
if yocto_enabled:
pv = oe.utils.trim_version(d.getVar('PV'), 2)
return "yocto-cfg-fragments-%s-native:do_populate_sysroot" % pv
else:
return ""
KERNEL_CFG_DEPENDS ?= "yocto-cfg-fragments-${LINUX_MAJOR}.${LINUX_MINOR}-native:do_populate_sysroot"
KERNEL_CACHE_FEATURES ?= "${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/virtio.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/xt-checksum.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/vswitch.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/lxc.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/docker.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/cgroup-hugetlb.scc')} \
${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/criu.scc')} \
"
KERNEL_FEATURES:append = " ${KERNEL_CACHE_FEATURES}"
# if kernel-yocto has been inherited (how we can check for configuration
# fragment merging suport at the moment, then add a dependency on the
# configuration fragment repository. This allows us to be sure that our
# features can be enabled via the fragments
do_kernel_metadata[depends] += "${KERNEL_CFG_DEPENDS}"
# xen kernel support
# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}"
KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/xen.scc', 'xen', d )}"
# k8s and k3s kernel support
# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k8s', ' file://kubernetes.scc', '', d)}"
# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k3s', ' file://kubernetes.scc', '', d)}"
KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/kubernetes.scc', 'k8s', d )}"
KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/kubernetes.scc', 'k3s', d )}"