# This is the base include file for all coreos based distro
# it should support the most basic distro without optional coreos
# features

INHERIT += "coreos_metadata_scm"

# Distro features and policies
# ==============================================================================

PACKAGE_CLASSES = "package_ipk"
INIT_MANAGER = "systemd"

# CoreOS use journald from the systemd package to handle log
# https://docs.yoctoproject.org/singleindex.html#using-systemd-journald-without-a-traditional-syslog-daemon
# This remove syslog from packagegroup-core-boot
VIRTUAL-RUNTIME_syslog = ""
VIRTUAL-RUNTIME_base-utils-syslog = ""

DISTRO_FEATURES ?= "usbhost pci ipv4 ipv6 wifi multiarch usrmerge efi pam"

# CoreOS wasn't compatible with older Yocto version, so we should not have any
# features backfilled. Value are from DISTRO_FEATURES_BACKFILL
# with the exception of gobject-introspection-data that are backfilled on
# purpose, this allow to use C library based on gobject in python or javascript
DISTRO_FEATURES_BACKFILL_CONSIDERED = "pulseaudio sysvinit ldconfig"

DISTRO_EXTRA_RDEPENDS += "packagegroup-core-boot"

# Build configuration
# ==============================================================================

TARGET_VENDOR = "-belden"

# We don't support multiple libc, so we don't need to append the libc name to
# the tmp directory: ie use build/tmp instead of build/tmp-glibc
TCLIBCAPPEND = ""

SANITY_TESTED_DISTROS ?= " \
            debian-11 \n \
            ubuntu-22.04 \n \
            "

# This variable is used to ensure that any distribution using the CoreOS layer
# include this file. This is checked by the coreos-sanity class
SANITY_COREOS_COMPATIBLE ?= "1"

require conf/distro/include/no-static-libs.inc
require conf/distro/include/yocto-uninative.inc
require conf/distro/include/security_flags.inc

# uninative is need to share the sstates between multiple host distrubtion
INHERIT += "uninative"

# Bitbake configuration
# ==============================================================================

BB_SIGNATURE_HANDLER ?= "OEBasicHash"

# SDK Configuration
# ==============================================================================

SDK_VENDOR = "-coreossdk"
SDK_VERSION = "${DISTRO_VERSION}"
SDK_VERSION[vardepvalue] = "${SDK_VERSION}"
SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
SDKPATHINSTALL = "/opt/${DISTRO}/${SDK_VERSION}"

# EFI and Secure boot
# ==============================================================================

EFI_PROVIDER = "efibootguard"
EFIBOOTGUARD_TIMEOUT ??= "60"
INHERIT += "coreos-efi-secureboot"


# PACKAGECONFIG
# ==============================================================================
# Reduce the size of some package by disabling some feature by default

# Distro using coreos can re-enabled a disabled config by changing
# the COREOS_DISABLED_PACKAGECONFIG variable

PACKAGECONFIG:pn-systemd ?= " \
    ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
    hostnamed \
    kmod \
    localed \
    logind \
    set-time-epoch \
    sysusers \
    userdb \
    vconsole \
    wheel-group \
    zstd \
"

# DNS Configuration


# CoreOS specific options
# ==============================================================================

# Distro based on CoreOS can provide their own configuration files for the
# CoreOS installer by overriding this variable
PREFERRED_PROVIDER_coreos-installer-config ??= "coreos-installer-config"
