49 lines
1.5 KiB
C++
49 lines
1.5 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}"
|
|
workdir="$(mktemp -d)"
|
|
trap 'rm -rf "${workdir}"' EXIT
|
|
|
|
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}" -cJf "${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
|