From b404c0cd3c12958e705f666c29920816912c2d56 Mon Sep 17 00:00:00 2001 From: Alessio Igor Bogani Date: Thu, 26 Sep 2019 11:35:02 +0200 Subject: wic: Using the right rootfs size during prepare_rootfs The commit 8e48b4d6c4 makes wic ignores IMAGE_ROOTFS_SIZE for rootfs size and makes it uses the computed one only. Re-add support for IMAGE_ROOTFS_SIZE variable and compute roots size only if the former is not defined. Moreover the size of a provided directory with --rootfs-dir="" in the .wks file should always be computed on the fly, else every partition will be constrained to be the same size as what ever value was in ROOTFS_SIZE. (From OE-Core rev: 0217a0392b8cc534fcc0d760b7663a1845b306f5) Signed-off-by: Alessio Igor Bogani Signed-off-by: Jason Wessel Signed-off-by: Richard Purdie --- scripts/lib/wic/partition.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'scripts/lib') diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index 2a71d7b1d6..d809408e1a 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -212,13 +212,24 @@ class Partition(): if os.path.isfile(rootfs): os.remove(rootfs) - # If size is not specified compute it from the rootfs_dir size if not self.size and real_rootfs: - # Use the same logic found in get_rootfs_size() - # from meta/classes/image.bbclass - du_cmd = "du -ks %s" % rootfs_dir - out = exec_cmd(du_cmd) - self.size = int(out.split()[0]) + # The rootfs size is not set in .ks file so try to get it + # from bitbake variable + rsize_bb = get_bitbake_var('ROOTFS_SIZE') + rdir = get_bitbake_var('IMAGE_ROOTFS') + if rsize_bb and rdir == rootfs_dir: + # Bitbake variable ROOTFS_SIZE is calculated in + # Image._get_rootfs_size method from meta/lib/oe/image.py + # using IMAGE_ROOTFS_SIZE, IMAGE_ROOTFS_ALIGNMENT, + # IMAGE_OVERHEAD_FACTOR and IMAGE_ROOTFS_EXTRA_SPACE + self.size = int(round(float(rsize_bb))) + else: + # Bitbake variable ROOTFS_SIZE is not defined so compute it + # from the rootfs_dir size using the same logic found in + # get_rootfs_size() from meta/classes/image.bbclass + du_cmd = "du -ks %s" % rootfs_dir + out = exec_cmd(du_cmd) + self.size = int(out.split()[0]) prefix = "ext" if self.fstype.startswith("ext") else self.fstype method = getattr(self, "prepare_rootfs_" + prefix) -- cgit v1.2.3-54-g00ecf