image: Support for qcow2

Add support for qcow2 image format. Implemented in the same way as
the previously existing vmdk and vdi solutions.

(From OE-Core rev: c1f9ed400e4b5fe5be4fac86021dea11a7546035)

Signed-off-by: Christian Ziethén <christian.ziethen@linaro.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Christian Ziethén
2015-07-23 16:32:28 +02:00
committed by Richard Purdie
parent 6dcd355571
commit 2963cc25af
5 changed files with 19 additions and 6 deletions

View File

@@ -63,7 +63,7 @@ DISK_SIGNATURE ?= "${DISK_SIGNATURE_GENERATED}"
SYSLINUX_ROOT ?= "root=/dev/sda2"
SYSLINUX_TIMEOUT ?= "10"
IS_VM = '${@bb.utils.contains_any("IMAGE_FSTYPES", ["vmdk" ,"vdi"], "true", "false", d)}'
IS_VM = '${@bb.utils.contains_any("IMAGE_FSTYPES", ["vmdk", "vdi", "qcow2"], "true", "false", d)}'
boot_direct_populate() {
dest=$1

View File

@@ -14,7 +14,8 @@ inherit boot-directdisk
IMAGE_TYPEDEP_vmdk = "ext3"
IMAGE_TYPEDEP_vdi = "ext3"
IMAGE_TYPES_MASKED += "vmdk vdi"
IMAGE_TYPEDEP_qcow2 = "ext3"
IMAGE_TYPES_MASKED += "vmdk vdi qcow2"
create_vmdk_image () {
qemu-img convert -O vmdk ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmdk
@@ -26,11 +27,18 @@ create_vdi_image () {
ln -sf ${IMAGE_NAME}.vdi ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.vdi
}
create_qcow2_image () {
qemu-img convert -O qcow2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.qcow2
ln -sf ${IMAGE_NAME}.qcow2 ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.qcow2
}
python do_vmimg() {
if 'vmdk' in d.getVar('IMAGE_FSTYPES', True):
bb.build.exec_func('create_vmdk_image', d)
if 'vdi' in d.getVar('IMAGE_FSTYPES', True):
bb.build.exec_func('create_vdi_image', d)
bb.build.exec_func('create_vdi_image', d)
if 'qcow2' in d.getVar('IMAGE_FSTYPES', True):
bb.build.exec_func('create_qcow2_image', d)
}
addtask vmimg after do_bootdirectdisk before do_build

View File

@@ -132,7 +132,7 @@ def build_live(d):
IMAGE_TYPE_live = "${@build_live(d)}"
inherit ${IMAGE_TYPE_live}
IMAGE_TYPE_vm = '${@bb.utils.contains_any("IMAGE_FSTYPES", ["vmdk", "vdi"], "image-vm", "", d)}'
IMAGE_TYPE_vm = '${@bb.utils.contains_any("IMAGE_FSTYPES", ["vmdk", "vdi", "qcow2"], "image-vm", "", d)}'
inherit ${IMAGE_TYPE_vm}
python () {

View File

@@ -13,7 +13,7 @@ def imagetypes_getdepends(d):
deps = []
ctypes = d.getVar('COMPRESSIONTYPES', True).split()
for type in (d.getVar('IMAGE_FSTYPES', True) or "").split():
if type in ["vmdk", "vdi", "live", "iso", "hddimg"]:
if type in ["vmdk", "vdi", "qcow2", "live", "iso", "hddimg"]:
type = "ext3"
basetype = type
for ctype in ctypes:
@@ -187,6 +187,7 @@ IMAGE_TYPES = " \
cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 \
vmdk \
vdi \
qcow2 \
elf \
"
@@ -213,5 +214,5 @@ DEPLOYABLE_IMAGE_TYPES ?= "hddimg iso"
IMAGE_EXTENSION_live = "hddimg iso"
# The IMAGE_TYPES_MASKED variable will be used to mask out from the IMAGE_FSTYPES,
# images that will not be built at do_rootfs time: vmdk, vdi, hddimg, iso, etc.
# images that will not be built at do_rootfs time: vmdk, vdi, qcow2, hddimg, iso, etc.
IMAGE_TYPES_MASKED ?= ""

View File

@@ -835,6 +835,10 @@ def check_sanity_everybuild(status, d):
if 'vdi' in d.getVar('IMAGE_FSTYPES', True) and 'live' in d.getVar('IMAGE_FSTYPES', True):
status.addresult("Error, IMAGE_FSTYPES vdi and live can't be built together\n")
# Check qcow2 and live can't be built together.
if 'qcow2' in d.getVar('IMAGE_FSTYPES', True) and 'live' in d.getVar('IMAGE_FSTYPES', True):
status.addresult("Error, IMAGE_FSTYPES qcow2 and live can't be built together\n")
# Check /bin/sh links to dash or bash
real_sh = os.path.realpath('/bin/sh')
if not real_sh.endswith('/dash') and not real_sh.endswith('/bash'):