meta-digi/meta-digi-containers/recipes-core/images/dey-image-container-lxc.inc

54 lines
1.7 KiB
C++

#
# Copyright (C) 2026, Digi International Inc.
#
########################
# LXC artifact
########################
do_image_lxc_bundle() {
rootfs_tar="${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.tar.xz"
if [ ! -f "${rootfs_tar}" ]; then
rootfs_tar="${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.tar.xz"
fi
lxc_tar="${DEPLOY_DIR_IMAGE}/${LXC_OUTPUT_NAME}"
mkdir -p "${T}"
export TMPDIR="${T}"
workdir="$(mktemp -d "${T}/dey-image-container-lxc.XXXXXX")"
cleanup_workdir() {
rm -rf "${workdir}"
}
trap cleanup_workdir EXIT HUP INT TERM
if [ ! -f "${rootfs_tar}" ]; then
bbfatal "Expected rootfs tarball not found: ${rootfs_tar}"
fi
lxc_dir="${workdir}/${CONTAINER_NAME}"
mkdir -p "${lxc_dir}/rootfs"
bbnote "Extracting rootfs for LXC bundle..."
tar -xf "${rootfs_tar}" -C "${lxc_dir}/rootfs"
config_in="${LXC_CONFIG_FILE}"
if [ ! -f "${config_in}" ]; then
bbfatal "LXC config file not found for CONTAINER_TYPE='${CONTAINER_TYPE}' and MACHINE='${MACHINE}': ${config_in}"
fi
sed \
-e "s|@LXC_ARCH@|${TARGET_ARCH}|g" \
-e "s|@LXC_FOLDER@|${LXC_FOLDER}|g" \
-e "s|@CONTAINER_NAME@|${CONTAINER_NAME}|g" \
-e "s|@CONTAINER_INIT_MANAGER@|${CONTAINER_INIT_MANAGER}|g" \
-e "s|@CONTAINER_INIT_SCRIPT@|${CONTAINER_INIT_SCRIPT}|g" \
"${config_in}" > "${lxc_dir}/config"
tar -C "${workdir}" -czf "${lxc_tar}" "${CONTAINER_NAME}"
if [ ! -s "${lxc_tar}" ]; then
bbfatal "LXC bundle was not generated correctly: ${lxc_tar}"
fi
bbnote "LXC bundle ready: ${lxc_tar}"
}
addtask image_lxc_bundle after do_image_complete before do_build