# These variables represent groupings of functionality in the CNCF
# landscape. In particular, they are areas where there is a choice
# between more than one implementation or an area where abstraction
# is beneficial.
#
# The contents of the variables are are runtime components that
# recipes may use for RDEPENDS.
#
# Build dependencies are not typically flexible, so do not currently
# have DEPENDS equivalents for the components (i.e. DEPENDS on runc
# versus crun).
#
# Distro features such as kubernetes or other container stacks
# can be used to set different defaults for these variables.
#
# Note: these are "global" values, since they represent choices.
# If more than of a grouping is required on target, then the variable
# can be appended or set to multiple values. That being said, Recipes
# should generally agree on the values, hence the global namespace.
# Recipe specific choices  can still be done, but they risk
# conflicting on target or causing runtime issues / errors.
#

#### CNCF "components"

## engines: docker/docker-moby, virtual-containerd, cri-o, podman, lxc
# VIRTUAL-RUNTIME_container_engine ??= "podman"
## runtime: runc, crun, runv, runx
# VIRTUAL-RUNTIME_container_runtime ??= "virtual-runc"
## networking: cni, netavark
# VIRTUAL-RUNTIME_container_networking ??= "cni"
## dns: cni, aardvark-dns
# VIRTUAL-RUNTIME_container_dns ??= "cni"
## orchestration: k8s, k3s
# VIRTUAL-RUNTIME_container_orchestration ??= "k3s"

## Kubernetes terminology "components"
# VIRTUAL-RUNTIME_cri ??= "virtual-containerd"
# VIRTUAL-RUNTIME_cni ??= "cni"

CONTAINER_RO_REMOVE ?= " ${@bb.utils.contains('VIRTUAL-RUNTIME_container_engine', 'podman', 'shadow', '', d)}"
ROOTFS_RO_UNNEEDED:remove = "${CONTAINER_RO_REMOVE}"

# Container registry IMAGE_FEATURES support.
# Defining FEATURE_PACKAGES_container-registry globally makes
# "container-registry" a valid IMAGE_FEATURES value for any image
# recipe (image.bbclass check_image_features auto-discovers
# FEATURE_PACKAGES_* variables). This avoids IMAGE_FEATURES[validitems]
# which pollutes signatures when set globally.
# Default is empty (validation only); container-image-host.bb sets the
# actual packages.
FEATURE_PACKAGES_container-registry ?= ""
