mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 20:59:41 +02:00

When more than one kernel is supported in oe-core, we may have situations where the options from an older (or newer) kernel are not appropriate for the other version (i.e. options have been added, removed or renamed). To support this we check the preferred version of the kernel and depend on a specific yocto-cfg recipe. This is similar to how the virtualization .inc files are chosen. If this technique proves to be correct, we can factor the common routines into a .inc and just set SRCREVs in the individual .bb files. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
76 lines
3.5 KiB
C++
76 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)
|
|
|
|
def kernel_meta_ver_depends(d):
|
|
import re
|
|
|
|
t = d.getVar("PREFERRED_PROVIDER_virtual/kernel")
|
|
pv = d.getVar( "PREFERRED_VERSION_%s" % t )
|
|
pv = re.sub( '%', '', pv )
|
|
|
|
yocto_enabled = bb.data.inherits_class('kernel-yocto', d)
|
|
if yocto_enabled:
|
|
return "yocto-cfg-fragments-%s-native:do_populate_sysroot" % pv
|
|
else:
|
|
return ""
|
|
|
|
KERNEL_CFG_DEPENDS ?= "${@kernel_meta_ver_depends(d)}"
|
|
|
|
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 )}"
|