coreos/layers/meta-belden-coreos/classes/coreos-image.bbclass

102 lines
4.2 KiB
Plaintext

# Class used to generate image based on Belden CoreOS
# We don't ihnerit from core-image, so not all core-image specific IMAGE_FEATURE
# are available. Only theses one are supported:
FEATURE_PACKAGES_tools-debug = "packagegroup-core-tools-debug"
FEATURE_PACKAGES_tools-profile = "packagegroup-core-tools-profile"
FEATURE_PACKAGES_hwcodecs = "${MACHINE_HWCODECS}"
FEATURE_PACKAGES_podman = "podman"
FEATURE_PACKAGES_podman-dev-tools = "podman-tui"
FEATURE_PACKAGES_podman-cockpit = "cockpit-podman"
FEATURE_PACKAGES_networkmanager = "networkmanager networkmanager-nmcli"
FEATURE_PACKAGES_networkmanager-dev-tools = "networkmanager-nmtui"
FEATURE_PACKAGES_networkmanager-cockpit = "cockpit-networkmanager"
FEATURE_PACKAGES_swupdate = "swupdate swupdate-client swupdate-lua"
# The cockpit feature automatically install the corresponding
# *-cockpit FEATURES_PACKAGES for any image features
FEATURE_PACKAGES_cockpit = "packagegroup-coreos-cockpit ${@get_feature_packages_with_suffix('cockpit', d)}"
# The dev-tools feature automatically install the corresponding
# *-dev-tools FEATURES_PACKAGES for any image features
FEATURE_PACKAGES_dev-tools = "${@get_feature_packages_with_suffix('dev-tools', d)}"
def get_feature_packages_with_suffix(suffix, d):
"""
For each feature inside IMAGE_FEATURES, look if a FEATURE_PACKAGE variable
exist for {feature}-{suffix}.
Return a list of all the value of the corresponding FEATURE_PACKAGE founded.
"""
images_features = d.getVar('IMAGE_FEATURES').split()
result = ""
for feature in images_features:
tools = d.getVar(f'FEATURE_PACKAGES_{feature}-{suffix}')
if tools:
result += f" {tools}"
return result
MACHINE_HWCODECS ??= ""
# These image features are CoreOS specifics:
#
# ssh-server: provide a ssh server, on core-image, two ssh server are supported
# and the features ssh-server-dropbear and ssh-server-openssh are
# available. For CoreOS, we only support dropbear
FEATURE_PACKAGES_ssh-server = "packagegroup-core-ssh-dropbear"
# The ptest distro feature want to install openssh-ptest by default, that conflict with dropbear
# Do not install openssh complementary packages if either packagegroup-core-ssh-dropbear or dropbear
# is installed # to avoid openssh-dropbear conflict
# see [Yocto #14858] for more information
PACKAGE_EXCLUDE_COMPLEMENTARY:append = "${@bb.utils.contains_any('PACKAGE_INSTALL', 'packagegroup-core-ssh-dropbear dropbear', 'openssh', '' , d)}"
# We can handle feature that conflicts with either:
# IMAGE_FEATURES_REPLACES_foo = 'bar1 bar2'
# Including image feature foo would replace the image features bar1 and bar2
# IMAGE_FEATURES_CONFLICTS_foo = 'bar1 bar2'
# An error exception would be raised if both image features foo and bar1(or bar2) are included
COREOS_IMAGE_BASE_INSTALL = "\
packagegroup-core-boot \
packagegroup-base-extended \
${@'efibootguard-tools' if d.getVar('EFI_PROVIDER') == 'efibootguard' else ''} \
os-release \
"
COREOS_IMAGE_EXTRA_INSTALL ?= ""
IMAGE_INSTALL ?= "${COREOS_IMAGE_BASE_INSTALL} ${COREOS_IMAGE_EXTRA_INSTALL}"
# IMAGE_LINGUAS default value is set in image.bbclass, so we need to change it
# before ihneriting the image class, as we don't need to install custom locales
IMAGE_LINGUAS ?= " "
inherit image
# Enable some feature by default
IMAGE_FEATURES:append = " ${@bb.utils.contains('EXTRA_IMAGE_FEATURES', 'debug-tweaks', '', ' read-only-rootfs', d)}"
# Add some extra space, as done in core-image-minimal
IMAGE_ROOTFS_EXTRA_SPACE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' + 4096', '', d)}"
# Unified kernel image and swupdate support
# ==============================================================================
COREOS_IMAGE_GENERATE_UKI ??= "${@bb.utils.contains('COMBINED_FEATURES', 'efi', '1', '0', d)}"
COREOS_IMAGE_GENERATE_SWU ??= "${@bb.utils.contains('IMAGE_FEATURES', 'swupdate', '1', '0', d)}"
# Support for Unified Kernel Image and Swupdate are optional
COREOS_IMAGE_EXTRACLASSES ??= ""
COREOS_IMAGE_EXTRACLASSES:append = "${@' coreos-image-uki' if d.getVar('COREOS_IMAGE_GENERATE_UKI') == '1' else ''}"
COREOS_IMAGE_EXTRACLASSES:append = "${@' coreos-image-swupdate' if d.getVar('COREOS_IMAGE_GENERATE_SWU') == '1' else ''}"
inherit ${COREOS_IMAGE_EXTRACLASSES}