# SPDX-FileCopyrightText: Copyright (C) 2025 Bruce Ashfield
#
# SPDX-License-Identifier: MIT
#
# VRuntime - Minimal distro for vdkr/vpdmn container runtime environments
#
# This distro is used by multiconfig builds (vruntime-aarch64, vruntime-x86-64)
# to create minimal rootfs images for QEMU-based container processing.
#
# IMPORTANT: This distro does NOT participate in CONTAINER_PROFILE.
# The vdkr/vpdmn rootfs images explicitly specify their container stacks
# to avoid conflicts between docker (runc) and podman (crun) requirements.
# This allows both to be built in the same multiconfig.

require conf/distro/poky.conf

# Mask recipes not needed by vruntime container runtime builds.
# Generated from bitbake -g dependency graph analysis.
# Each file can be commented out independently to disable masking for that layer.
require conf/distro/include/vruntime-bbmask.inc
require conf/distro/include/vruntime-bbmask-oe-core.inc
require conf/distro/include/vruntime-bbmask-meta-oe.inc

DISTRO = "vruntime"
DISTRO_NAME = "VRuntime Minimal"
DISTRO_VERSION = "1.0"

# Minimal distro features for container runtime environment
# - acl: Access control lists (containers need this)
# - ext2: Filesystem support
# - ipv4/ipv6: Network support for container networking
# - seccomp: Security for container isolation
# - vfat: For potential boot partition support
# - pci: PCI device support (virtio devices)
# - vcontainer: Enable vdkr/vpdmn kernel config fragments (9p, squashfs, overlayfs)
#
# Explicitly NOT included: x11, wayland, pulseaudio, bluetooth, wifi, nfc, 3g, pcmcia
DISTRO_FEATURES = "acl ext2 ipv4 ipv6 seccomp vfat pci vcontainer vxn"

# Block backfill features not needed by container runtime environments.
# OE-core's DISTRO_FEATURES_BACKFILL auto-appends these to DISTRO_FEATURES
# unless explicitly listed here. Without this, gobject-introspection-data
# enables python3-pygobject (which DEPENDS on cairo), and wayland enables
# pygobject's cairo PACKAGECONFIG — both are masked in vruntime builds.
DISTRO_FEATURES_BACKFILL_CONSIDERED = "pulseaudio gobject-introspection-data opengl ptest multiarch wayland vulkan"

# Native and nativesdk classes need full features for build tools
DISTRO_FEATURES:class-native = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"
DISTRO_FEATURES:class-nativesdk = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"

# Default to ext4, but image recipes may override to squashfs
IMAGE_FSTYPES = "ext4"

# Use busybox init for minimal footprint
# The vdkr/vpdmn images use custom /init scripts anyway
VIRTUAL-RUNTIME_init_manager = "busybox"
VIRTUAL-RUNTIME_initscripts = "initscripts"

# Disable unnecessary features
VIRTUAL-RUNTIME_login_manager = ""

# Keep images small - no documentation or debug
EXTRA_IMAGE_FEATURES = ""

# =============================================================================
# Container runtime: NOT SET
# =============================================================================
# Unlike normal container distros, vruntime does NOT set CONTAINER_PROFILE
# or VIRTUAL-RUNTIME_container_runtime. This prevents containerd/podman from
# pulling a specific runtime via RDEPENDS, avoiding conflicts when both
# vdkr (runc) and vpdmn (crun) are built in the same multiconfig.
#
# The vdkr-rootfs-image and vpdmn-rootfs-image recipes explicitly install
# their required runtimes in IMAGE_INSTALL.
# =============================================================================
VIRTUAL-RUNTIME_container_runtime = ""
