diff options
Diffstat (limited to 'meta-agl-ic-container/classes/lxc-config.bbclass')
-rw-r--r-- | meta-agl-ic-container/classes/lxc-config.bbclass | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/meta-agl-ic-container/classes/lxc-config.bbclass b/meta-agl-ic-container/classes/lxc-config.bbclass new file mode 100644 index 00000000..921aaf92 --- /dev/null +++ b/meta-agl-ic-container/classes/lxc-config.bbclass @@ -0,0 +1,58 @@ +# Helper class for installing LXC guest configuration. +# Assumes that: +# - Recipe name is 'lxc-config-' + <guest name> +# - Corresponding files {config,system.conf}.<guest name>.in are in +# the file search path +# - That references to the DRM lease device name are parameterized +# with @DRM_LEASE_DEVICE@ in the .in files +# As well: +# - The .in files can optionally use the @LXC_AUTO_START@ parameter +# to pick up the value of the LXC_AUTO_START variable for use in +# defining lxc.start.auto. The default value is "0", so recipes +# need to assign the variable to "1" to have the associated +# container start automatically. + +python __anonymous() { + bpn = d.getVar('BPN') + if not bpn.startswith('lxc-config-'): + bb.error('Recipe name does not start with \'lxc-config-\'') + config = bpn[11:] + d.setVar('LXC_CONFIG_NAME', config) + src_uri = 'file://basic.in' \ + + ' file://mount.in' \ + + ' file://network.in' \ + + ' file://environment.in' \ + + ' file://misc.in' \ + + ' file://system.conf.' + config + '.in' + d.setVar('SRC_URI', src_uri) +} + +S = "${WORKDIR}" + +inherit allarch + +DRM_LEASE_DEVICE ??= "card0-HDMI-A-1" + +DRM_LEASE_DEVICE:qemuall ?= "card0-Virtual-1" + +LXC_AUTO_START ??= "0" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +do_install () { + rm -f ${WORKDIR}/config.${LXC_CONFIG_NAME}.in + files="basic.in mount.in network.in environment.in misc.in" + for f in ${files}; do + cat ${WORKDIR}/$f >> ${WORKDIR}/config.${LXC_CONFIG_NAME}.in + done + + install -m 0755 -d ${D}/var/lib/lxc/${LXC_CONFIG_NAME} + for f in config.${LXC_CONFIG_NAME}.in system.conf.${LXC_CONFIG_NAME}.in; do + sed -e 's|@DRM_LEASE_DEVICE@|${DRM_LEASE_DEVICE}|g' \ + -e 's|@LXC_AUTO_START@|${LXC_AUTO_START}|g' \ + ${WORKDIR}/$f > ${D}${localstatedir}/lib/lxc/${LXC_CONFIG_NAME}/${f%.${LXC_CONFIG_NAME}.in} + done +} + +FILES:${PN} = "${localstatedir}/lib/lxc/" |