From 05c59ed987cdddc00e9e217032a69197e40a8448 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 3 May 2016 17:28:01 +0100 Subject: image_types: fix image/compression dependency collection As compressions can be chained (i.e. cpio.bz2.md5sum) we need to walk the fstype list to collect the dependencies from each step. Signed-off-by: Ross Burton --- meta/classes/image_types.bbclass | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'meta/classes') diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index 0b9758e42b..f74ae18c69 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass @@ -11,32 +11,28 @@ IMAGE_ROOTFS_ALIGNMENT ?= "1" def imagetypes_getdepends(d): def adddep(depstr, deps): - for i in (depstr or "").split(): - if i not in deps: - deps.append(i) + for d in (depstr or "").split(): + # Add task dependency if not already present + if ":" not in d: + d += ":do_populate_sysroot" + deps.add(d) - deps = [] - ctypes = d.getVar('COMPRESSIONTYPES', True).split() fstypes = set((d.getVar('IMAGE_FSTYPES', True) or "").split()) fstypes |= set((d.getVar('IMAGE_FSTYPES_DEBUGFS', True) or "").split()) - for type in fstypes: - if type in ["vmdk", "vdi", "qcow2", "hdddirect", "live", "iso", "hddimg"]: - type = "ext4" - basetype = type - for ctype in ctypes: - if type.endswith("." + ctype): - basetype = type[:-len("." + ctype)] - adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype, True), deps) - break + + deps = set() + for typestring in fstypes: + types = typestring.split(".") + basetype, resttypes = types[0], types[1:] + + adddep(d.getVar('IMAGE_DEPENDS_%s' % basetype, True) , deps) for typedepends in (d.getVar("IMAGE_TYPEDEP_%s" % basetype, True) or "").split(): adddep(d.getVar('IMAGE_DEPENDS_%s' % typedepends, True) , deps) - adddep(d.getVar('IMAGE_DEPENDS_%s' % basetype, True) , deps) - - depstr = "" - for dep in deps: - depstr += " " + dep + ":do_populate_sysroot" - return depstr + for ctype in resttypes: + adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype, True), deps) + # Sort the set so that ordering is consistant + return " ".join(sorted(deps)) XZ_COMPRESSION_LEVEL ?= "-e -6" XZ_INTEGRITY_CHECK ?= "crc32" -- cgit 1.2.3-korg