summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Ashfield <bruce.ashfield@gmail.com>2021-06-16 23:10:36 -0400
committerBruce Ashfield <bruce.ashfield@gmail.com>2021-07-23 09:09:56 -0400
commit8db75f2809318cfb4dbe1c6873c5a6bcfefc4d8c (patch)
tree00bf5b0296c172925b06c06da2e16a78cb89db58
parent44db8ee6ddf7c9eb1b5ffb22e9b83b3840997da9 (diff)
downloadmeta-virtualization-8db75f2809318cfb4dbe1c6873c5a6bcfefc4d8c.tar.gz
virtualization/config: allow conditional use of yocto-cfg-fragments
To help enforce/guide consistent configuration and to avoid duplicating configuration fragments into the meta-virt layer, we leverage a native provider of the yocto-kernel-cache fragment repository. To allow support for kernels that support fragments, but don't have the yocto-kernel-cache in the kernel's SRC_URI, we create two conditional parts of the virtualization configuration. If virtualization is enabled in the distro features, the kernel version matches one of our supported ones, and the kernel inherits kernel-yocto, we add a depedency on the yocto-cfg-fragments-native recipe. That recipe will install the fragment collection to the kernel recipe's native sysroot. We can then check for the kernel-cache on the SRC_URI. If it is present, we use the feature at the standard location. If it is not present, we add the fragment from the native sysroot. While we could always use the native sysroot variant, we want to allow a kernel with a kernel-cache to be the first choice, and provide their own fragments. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r--recipes-kernel/linux/linux-yocto_virtualization.inc23
1 files changed, 21 insertions, 2 deletions
diff --git a/recipes-kernel/linux/linux-yocto_virtualization.inc b/recipes-kernel/linux/linux-yocto_virtualization.inc
index 321dda20..4c6dc42f 100644
--- a/recipes-kernel/linux/linux-yocto_virtualization.inc
+++ b/recipes-kernel/linux/linux-yocto_virtualization.inc
@@ -15,11 +15,30 @@ KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm',
15# aufs kernel support required for xen-image-minimal 15# aufs kernel support required for xen-image-minimal
16KERNEL_FEATURES_append += "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}" 16KERNEL_FEATURES_append += "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}"
17 17
18KERNEL_FEATURES_append = " cfg/virtio.scc" 18# if the kernel-yocto meta-data routine automatically starts to add the
19# recipe-sysroot-native, we can do away with this conditional, since all
20# features will be found at the same relative offset from a search
21# directory
22def kernel_cache_cond_feature(src_uri,feature):
23 import re
24 kernel_cache = re.search("kernel-cache", src_uri )
25 if kernel_cache:
26 return feature
27
28 return "../recipe-sysroot-native/kcfg/" + feature
29
30KERNEL_CACHE_FEATURES ?= "${@kernel_cache_cond_feature(d.getVar('SRC_URI'),'cfg/virtio.scc')}"
31KERNEL_FEATURES_append = "${KERNEL_CACHE_FEATURES}"
32
33# if kernel-yocto has been inherited (how we can check for configuration
34# fragment merging suport at the moment, then add a dependency on the
35# configuration fragment repository. This allows us to be sure that our
36# features can be enabled via the fragments
37do_kernel_metadata[depends] += "${@['', 'yocto-cfg-fragments-native:do_populate_sysroot'][(bb.data.inherits_class('kernel-yocto', d))]}"
19 38
20# xen kernel support 39# xen kernel support
21SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}" 40SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}"
22 41
23# k8s and k3s kernel support 42# k8s and k3s kernel support
24SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k8s', ' file://kubernetes.scc', '', d)}" 43SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k8s', ' file://kubernetes.scc', '', d)}"
25SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k3s', ' file://kubernetes.scc', '', d)}" \ No newline at end of file 44SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k3s', ' file://kubernetes.scc', '', d)}"