summaryrefslogtreecommitdiffstats
path: root/bsp/meta-arm/meta-arm-autonomy/classes/kernel-xenguest.bbclass
blob: a4954aaa4b68639fac8ade3957411200c7695bec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Create a xenguest image containing the kernel with initramfs when
# initramfs is activated
# This is done using kernel-fitimage as model
# To activate this, kernel-xenguest must be added to KERNEL_CLASSES

inherit xenguest-image

# use a local copy to pack all together
XENGUEST_IMAGE_DEPLOY_DIR = "${WORKDIR}/tmp-xenguest"

python __anonymous () {
    # only if xenguest image type is present
    if bb.utils.contains('IMAGE_FSTYPES', 'xenguest', '1', '0', d):
        # only if initramfs bundle is activated
        if d.getVar('INITRAMFS_IMAGE') and d.getVar('INITRAMFS_IMAGE_BUNDLE') == "1":
            if not bb.utils.contains('KERNEL_IMAGETYPES', 'Image', '1', '0', d):
                bb.fatal("xenguest image type with initramfs require Image kernel image type")
            bb.build.addtask('do_assemble_xenguest_initramfs', 'do_deploy', 'do_bundle_initramfs', d)
}

do_assemble_xenguest_initramfs() {
    xenguest_image_clone
    call_xenguest_mkimage partial --xen-kernel=${B}/${KERNEL_OUTPUT_DIR}/Image.initramfs
    rm -f ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest
    call_xenguest_mkimage pack ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest
}
do_assemble_xenguest_initramfs[depends] += "${INITRAMFS_IMAGE}:do_image_complete"

kernel_do_deploy_append() {
    if [ -f "${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest" ]; then
        install -m 0644 ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest "$deployDir/Image-${INITRAMFS_NAME}.xenguest"
        ln -snf Image-${INITRAMFS_NAME}.xenguest $deployDir/Image-${INITRAMFS_LINK_NAME}.xenguest
    fi
}