343 lines
9.7 KiB
BlitzBasic
343 lines
9.7 KiB
BlitzBasic
# Copyright (C) 2026, Digi International Inc.
|
|
|
|
SUMMARY = "Recipe to build Digi Container Packages (DCP) in LXC and Podman/Docker variants"
|
|
LICENSE = "MIT"
|
|
|
|
require dey-image-dcp-artifact.inc
|
|
require dey-image-dcp-fragments.inc
|
|
require dey-image-dcp-lxc.inc
|
|
require dey-image-dcp-podman.inc
|
|
|
|
inherit core-image image-container image-oci
|
|
|
|
########################
|
|
# Image base settings
|
|
########################
|
|
IMAGE_FEATURES = ""
|
|
IMAGE_FSTYPES = "tar.xz oci"
|
|
IMAGE_LINGUAS = "en-us"
|
|
NO_RECOMMENDATIONS = "1"
|
|
|
|
########################
|
|
# Container profile
|
|
########################
|
|
# Select the profile in local.conf (e.g. DCP_NAME = "lvgl", "webkit",
|
|
# "chromium" or "flutter"). Defaults to "lvgl" when not set by the build
|
|
# configuration.
|
|
DCP_NAME ?= "lvgl"
|
|
OVERRIDES:append = ":container-${DCP_NAME}"
|
|
|
|
########################
|
|
# Container runtime knobs
|
|
########################
|
|
CONTAINER_INIT_MANAGER ?= "/usr/bin/docker-init"
|
|
CONTAINER_INIT_SCRIPT ?= "sleep infinity"
|
|
CONTAINER_PROFILE_DIR ?= "${CONTAINERS_DIR}/${DCP_NAME}"
|
|
CONTAINER_ROOTFS_OVERLAY_DIRS ?= ""
|
|
CONTAINER_DEFAULT_ROOTFS_DIR ?= "${CONTAINER_PROFILE_DIR}/rootfs_files"
|
|
CONTAINER_ROOTFS_OVERLAY_TARBALLS ?= ""
|
|
|
|
########################
|
|
# Podman output knobs
|
|
########################
|
|
PODMAN_TAG ?= "${DCP_NAME}-tag"
|
|
PODMAN_OUTPUT_NAME ?= "${DCP_NAME}_podman_${MACHINE}.tar"
|
|
|
|
########################
|
|
# LXC output knobs
|
|
########################
|
|
CONTAINERS_DIR ?= "${THISDIR}/../../containers"
|
|
LXC_FOLDER ?= "/var/lib/lxc"
|
|
LXC_OUTPUT_NAME ?= "${DCP_NAME}_lxc_${MACHINE}.tar.gz"
|
|
LXC_CONFIG_DIR ?= "${CONTAINER_PROFILE_DIR}/configs_lxc"
|
|
LXC_CONFIG_FILE ?= "${LXC_CONFIG_DIR}/config_lxc_${MACHINE}"
|
|
|
|
########################
|
|
# Artifact layout knobs
|
|
########################
|
|
CONTAINER_ARTIFACT_TEMPLATE_DIR ?= ""
|
|
CONTAINER_DEFAULT_ARTIFACT_TEMPLATE_DIR ?= "${CONTAINER_PROFILE_DIR}/artifact"
|
|
META_DIGI_REPO_DIR ?= "${THISDIR}/../../.."
|
|
CONTAINER_FRIENDLY_NAME ?= "${DCP_NAME}"
|
|
CONTAINER_ARTIFACT_VERSION ?= "${PV}"
|
|
CONTAINER_CREATE_ARGS ?= ""
|
|
CONTAINER_CREATE_ARGS_PODMAN ?= "${CONTAINER_CREATE_ARGS}"
|
|
CONTAINER_FIRMWARE_VERSIONS ?= ""
|
|
CONTAINER_DEVICE_TYPES_JSON ?= "[\"${MACHINE}\"]"
|
|
CONTAINER_ARTIFACT_DESCRIPTION ?= ""
|
|
CONTAINER_ARTIFACT_BUILD_ID ?= ""
|
|
CONTAINER_ARTIFACT_LABELS_JSON ?= "{}"
|
|
# monitor and (auto/re)start configuration
|
|
CONTAINER_AUTOSTART ?= "true"
|
|
CONTAINER_MONITOR ?= "true"
|
|
CONTAINER_RESTART_ENABLED ?= "true"
|
|
CONTAINER_RESTART_MAX_RETRIES ?= "3"
|
|
CONTAINER_RESTART_WINDOW ?= "60"
|
|
CONTAINER_RESTART_RETRY_DELAY ?= "3"
|
|
|
|
########################
|
|
# Container image behavior
|
|
########################
|
|
VIRTUAL-RUNTIME_init_manager = ""
|
|
VIRTUAL-RUNTIME_initscripts = ""
|
|
IMAGE_CONTAINER_NO_DUMMY = "1"
|
|
|
|
########################
|
|
# OCI metadata mapping
|
|
########################
|
|
OCI_IMAGE_TAG ?= "${PODMAN_TAG}"
|
|
OCI_IMAGE_TAG_SAFE = "${@d.getVar('OCI_IMAGE_TAG').replace(':', '_')}"
|
|
OCI_IMAGE_ENTRYPOINT = "${CONTAINER_INIT_MANAGER}"
|
|
OCI_IMAGE_ENTRYPOINT_ARGS = "${CONTAINER_INIT_SCRIPT}"
|
|
|
|
########################
|
|
# Base packages
|
|
########################
|
|
IMAGE_INSTALL = " \
|
|
base-files \
|
|
base-passwd \
|
|
busybox \
|
|
netbase \
|
|
tini \
|
|
"
|
|
|
|
########################
|
|
# Container type customizations LVGL
|
|
########################
|
|
CONTAINER_INIT_SCRIPT:container-lvgl = "/start-lvgl-demo.sh"
|
|
CONTAINER_FRIENDLY_NAME:container-lvgl = "LVGL Demo"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-lvgl:ccmp25 = " \
|
|
--privileged \
|
|
--network none \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/galcore \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--tty \
|
|
"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-lvgl:ccimx95 = " \
|
|
--privileged \
|
|
--network none \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/mali0 \
|
|
--device /dev/dma_heap \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--tty \
|
|
"
|
|
IMAGE_INSTALL:append:container-lvgl = " \
|
|
lvgl-demo \
|
|
weston \
|
|
weston-init \
|
|
"
|
|
|
|
DISTRO_FEATURES:remove:container-lvgl = " wayland"
|
|
|
|
########################
|
|
# Container type customizations webkit
|
|
########################
|
|
CONTAINER_INIT_SCRIPT:container-webkit = "/start-webkit-demo.sh"
|
|
CONTAINER_FRIENDLY_NAME:container-webkit = "WebKit Demo"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-webkit:ccmp25 = " \
|
|
--privileged \
|
|
--network host \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/galcore \
|
|
--device /dev/fb0 \
|
|
--device /dev/snd \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--device /dev/gpiochip5 \
|
|
--device /dev/mmcblk0boot0 \
|
|
--device /dev/mmcblk0boot1 \
|
|
--device /dev/mailbox0 \
|
|
--device /dev/video0 \
|
|
--device /dev/video1 \
|
|
--device /dev/video2 \
|
|
--device /dev/video3 \
|
|
--device /dev/video4 \
|
|
--device /dev/video5 \
|
|
--device /dev/video6 \
|
|
--device /dev/media0 \
|
|
--device /dev/media1 \
|
|
--device /dev/media2 \
|
|
--device /dev/v4l-subdev0 \
|
|
--device /dev/v4l-subdev1 \
|
|
--device /dev/v4l-subdev2 \
|
|
--device /dev/v4l-subdev3 \
|
|
--device /dev/v4l-subdev4 \
|
|
--device /dev/v4l-subdev5 \
|
|
--device /dev/v4l-subdev6 \
|
|
--device /dev/v4l-subdev7 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--volume /etc/asound.conf:/etc/asound.conf:ro \
|
|
--volume /run/pulse:/run/pulse \
|
|
--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \
|
|
--volume /dev/log:/dev/log \
|
|
--volume /run/systemd/journal:/run/systemd/journal \
|
|
--volume /etc/fw_env.config:/etc/fw_env.config:ro \
|
|
--env PULSE_SERVER=unix:/run/pulse/native \
|
|
--tty \
|
|
"
|
|
IMAGE_INSTALL:append:container-webkit = " \
|
|
adwaita-icon-theme-symbolic \
|
|
alsa-utils \
|
|
bluez5 \
|
|
connectcore-demo-example \
|
|
dbus \
|
|
fontconfig-utils \
|
|
hicolor-icon-theme \
|
|
libdrm \
|
|
liberation-fonts \
|
|
libgpiod-tools \
|
|
libinput \
|
|
libubootenv-bin \
|
|
networkmanager-nmcli \
|
|
packagegroup-dey-gstreamer \
|
|
packagegroup-dey-webkit \
|
|
packagegroup-core-weston \
|
|
pulseaudio-server \
|
|
python3-dbus \
|
|
ttf-dejavu-sans \
|
|
ttf-dejavu-sans-mono \
|
|
ttf-dejavu-serif \
|
|
wayland \
|
|
wayland-protocols \
|
|
weston \
|
|
weston-init \
|
|
"
|
|
|
|
IMAGE_INSTALL:append:container-webkit:ccmp25 = " \
|
|
gcnano-userland-multi-binary-stm32mp \
|
|
libgles1-gcnano \
|
|
libopenvg-gcnano \
|
|
libvulkan-driver-gcnano \
|
|
packagegroup-dey-x-linux-ai \
|
|
"
|
|
|
|
########################
|
|
# Container type customizations chromium
|
|
########################
|
|
CONTAINER_INIT_SCRIPT:container-chromium = "/start-chromium-demo.sh"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-chromium = " \
|
|
--privileged \
|
|
--network host \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--volume /etc/resolv.conf:/etc/resolv.conf:ro \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/mali0 \
|
|
--device /dev/dma_heap \
|
|
--device /dev/fb0 \
|
|
--device /dev/snd \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--device /dev/gpiochip5 \
|
|
--device /dev/mmcblk0boot0 \
|
|
--device /dev/mmcblk0boot1 \
|
|
--device /dev/mailbox0 \
|
|
--device /dev/video0 \
|
|
--device /dev/video1 \
|
|
--device /dev/video2 \
|
|
--device /dev/video3 \
|
|
--device /dev/video4 \
|
|
--device /dev/media0 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--volume /etc/asound.conf:/etc/asound.conf:ro \
|
|
--volume /run/pulse:/run/pulse \
|
|
--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \
|
|
--volume /dev/log:/dev/log \
|
|
--volume /run/systemd/journal:/run/systemd/journal \
|
|
--volume /etc/fw_env.config:/etc/fw_env.config:ro \
|
|
--env PULSE_SERVER=unix:/run/pulse/native \
|
|
--tty \
|
|
"
|
|
IMAGE_INSTALL:append:container-chromium = " \
|
|
adwaita-icon-theme-symbolic \
|
|
alsa-utils \
|
|
bluez5 \
|
|
connectcore-demo-example \
|
|
dbus \
|
|
fontconfig-utils \
|
|
hicolor-icon-theme \
|
|
libdrm \
|
|
liberation-fonts \
|
|
libgpiod-tools \
|
|
libinput \
|
|
libubootenv-bin \
|
|
networkmanager-nmcli \
|
|
packagegroup-dey-gstreamer \
|
|
packagegroup-core-weston \
|
|
packagegroup-dey-chromium \
|
|
pulseaudio-server \
|
|
python3-dbus \
|
|
qtvirtualkeyboard \
|
|
ttf-dejavu-sans \
|
|
ttf-dejavu-sans-mono \
|
|
ttf-dejavu-serif \
|
|
wayland \
|
|
wayland-protocols \
|
|
weston \
|
|
weston-init \
|
|
"
|
|
|
|
########################
|
|
# Container type customizations flutter
|
|
########################
|
|
CONTAINER_INIT_SCRIPT:container-flutter = "/start-flutter-demo.sh"
|
|
CONTAINER_FRIENDLY_NAME:container-flutter = "Flutter Demo"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-flutter:ccmp25 = " \
|
|
--privileged \
|
|
--network none \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/galcore \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--tty \
|
|
"
|
|
CONTAINER_CREATE_ARGS_PODMAN:container-flutter:ccimx95 = " \
|
|
--privileged \
|
|
--network none \
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,mode=1777 \
|
|
--device /dev/dri \
|
|
--device /dev/input \
|
|
--device /dev/mali0 \
|
|
--device /dev/dma_heap \
|
|
--device /dev/tty \
|
|
--device /dev/tty0 \
|
|
--device /dev/tty1 \
|
|
--device /dev/tty7 \
|
|
--volume /run/udev:/run/udev:ro \
|
|
--tty \
|
|
"
|
|
IMAGE_INSTALL:append:container-flutter = " \
|
|
liberation-fonts \
|
|
packagegroup-dey-flutter \
|
|
"
|
|
IMAGE_INSTALL:append:container-flutter:ccmp25 = " \
|
|
gcnano-userland-multi-binary-stm32mp \
|
|
libgles2-gcnano \
|
|
"
|
|
DISTRO_FEATURES:remove:container-flutter = " wayland"
|