From 2963cc25afb65376ba6a1a6487274143bd67f674 Mon Sep 17 00:00:00 2001 From: Christian Ziethén Date: Thu, 23 Jul 2015 16:32:28 +0200 Subject: image: Support for qcow2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/boot-directdisk.bbclass | 2 +- meta/classes/image-vm.bbclass | 12 ++++++++++-- meta/classes/image.bbclass | 2 +- meta/classes/image_types.bbclass | 5 +++-- meta/classes/sanity.bbclass | 4 ++++ 5 files changed, 19 insertions(+), 6 deletions(-) (limited to 'meta/classes') diff --git a/meta/classes/boot-directdisk.bbclass b/meta/classes/boot-directdisk.bbclass index e1ec1be534..600e21abcf 100644 --- a/meta/classes/boot-directdisk.bbclass +++ b/meta/classes/boot-directdisk.bbclass @@ -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 diff --git a/meta/classes/image-vm.bbclass b/meta/classes/image-vm.bbclass index fdfd14f780..28519c8af1 100644 --- a/meta/classes/image-vm.bbclass +++ b/meta/classes/image-vm.bbclass @@ -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 diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index e2995e2638..ff2ed0d09a 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -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 () { diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index 588a474620..cc789fc27f 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass @@ -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 ?= "" diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 2855941a7b..6ad620b0a4 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass @@ -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'): -- cgit v1.2.3-54-g00ecf