[OE-core] [PATCH] wic: obey the rootfs size from the metadata

Ed Bartosh ed.bartosh at linux.intel.com
Fri Dec 16 14:47:28 UTC 2016


Hi Christopher,

Thank you for the patch!

+1

On Thu, Dec 15, 2016 at 12:42:39PM -0700, Christopher Larson wrote:
> From: Christopher Larson <chris_larson at mentor.com>
> 
> When no --size is specified for the rootfs in the .wks, we want to obey the
> rootfs size from the metadata, otherwise the defined IMAGE_ROOTFS_EXTRA_SPACE
> and IMAGE_OVERHEAD_FACTOR will not be obeyed. In some cases, this can result
> in image construction failure, if the size determined by du was insufficient
> to hold the files without the aforementioned extra space.
> 
> This fallback from --size to ROOTFS_SIZE was already implemented when
> --rootfs-dir is specified in the .wks, but it did not occur otherwise, neither
> when --rootfs-dir= was passed to `wic create` nor when IMAGE_ROOTFS was used.
> This made a certain amount of sense, as this fallback logic happened at such
> a level that it wasn't able to identify which partitions were rootfs
> partitions otherwise. Rather than doing it at that level, we can do it in
> prepare_rootfs(), which is run by the rootfs source plugins.
> 
> Note that IMAGE_OVERHEAD_FACTOR and a --overhead-factor in the .wks will now
> both be applied when --size isn't specified in the .wks. A warning is added
> about this, though a user won't see it unless wic fails or they examine the
> do_image_wic log.
> 
> Fixes [YOCTO #10815]
> 
> Signed-off-by: Christopher Larson <chris_larson at mentor.com>
> ---
>  scripts/lib/wic/partition.py | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
> index ac4c836..b191cde 100644
> --- a/scripts/lib/wic/partition.py
> +++ b/scripts/lib/wic/partition.py
> @@ -28,7 +28,7 @@ import os
>  import tempfile
>  
>  from wic.utils.oe.misc import msger, parse_sourceparams
> -from wic.utils.oe.misc import exec_cmd, exec_native_cmd
> +from wic.utils.oe.misc import exec_cmd, exec_native_cmd, get_bitbake_var
>  from wic.plugin import pluginmgr
>  
>  partition_methods = {
> @@ -194,6 +194,17 @@ class Partition():
>              msger.error("File system for partition %s not specified in kickstart, " \
>                          "use --fstype option" % (self.mountpoint))
>  
> +        # Get rootfs size from bitbake variable if it's not set in .ks file
> +        if not self.size:
> +            # 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
> +            rsize_bb = get_bitbake_var('ROOTFS_SIZE')
> +            if rsize_bb:
> +                msger.warning('overhead-factor was specified, but size was not, so bitbake variables will be used for the size. In this case both IMAGE_OVERHEAD_FACTOR and --overhead-factor will be applied')
> +                self.size = int(round(float(rsize_bb)))
> +
>          for prefix in ("ext", "btrfs", "vfat", "squashfs"):
>              if self.fstype.startswith(prefix):
>                  method = getattr(self, "prepare_rootfs_" + prefix)
> -- 
> 2.8.0
> 

-- 
--
Regards,
Ed



More information about the Openembedded-core mailing list