[OE-core] [PATCH 3/4] wic: allow to configure overhead factor per partition

Alexandre Belloni alexandre.belloni at free-electrons.com
Sun Feb 8 23:16:23 UTC 2015


Introduce a new option --overhead-factor to replace
IMAGE_OVERHEAD_FACTOR.

Signed-off-by: Alexandre Belloni <alexandre.belloni at free-electrons.com>
---
 scripts/lib/image/help.py                              |  6 ++++++
 scripts/lib/wic/kickstart/custom_commands/partition.py | 14 ++++++++++++--
 scripts/lib/wic/utils/oe/misc.py                       |  1 -
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/scripts/lib/image/help.py b/scripts/lib/image/help.py
index 8e026986aa97..e1eb2659792f 100644
--- a/scripts/lib/image/help.py
+++ b/scripts/lib/image/help.py
@@ -749,6 +749,12 @@ DESCRIPTION
                         beyond the size specified by --size.
                         By default, 10MB.
 
+         --overhead-factor: This option is specific to wic. The
+                            size of the partition is multiplied by
+                            this factor. It has to be greater than or
+                            equal to 1.
+                            The default value is 1.3.
+
     * bootloader
 
       This command allows the user to specify various bootloader
diff --git a/scripts/lib/wic/kickstart/custom_commands/partition.py b/scripts/lib/wic/kickstart/custom_commands/partition.py
index 8bde1b80e16a..44df20c58a25 100644
--- a/scripts/lib/wic/kickstart/custom_commands/partition.py
+++ b/scripts/lib/wic/kickstart/custom_commands/partition.py
@@ -51,6 +51,7 @@ class Wic_PartData(Mic_PartData):
         self.rootfs = kwargs.get("rootfs-dir", None)
         self.no_table = kwargs.get("no-table", False)
         self.extra_space = kwargs.get("extra-space", "10M")
+        self.overhead_factor = kwargs.get("overhead-factor", 1.3)
         self.source_file = ""
         self.size = 0
 
@@ -66,6 +67,7 @@ class Wic_PartData(Mic_PartData):
         if self.no_table:
             retval += " --no-table"
         retval += " --extra-space=%d" % self.extra_space
+        retval += " --overhead-factor=%f" % self.overhead_factor
 
         return retval
 
@@ -233,7 +235,7 @@ class Wic_PartData(Mic_PartData):
             extra_blocks = self.extra_space
 
         rootfs_size = actual_rootfs_size + extra_blocks
-        rootfs_size *= IMAGE_OVERHEAD_FACTOR
+        rootfs_size *= self.overhead_factor
 
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, self.mountpoint, rootfs_size))
@@ -280,7 +282,7 @@ class Wic_PartData(Mic_PartData):
             extra_blocks = self.extra_space
 
         rootfs_size = actual_rootfs_size + extra_blocks
-        rootfs_size *= IMAGE_OVERHEAD_FACTOR
+        rootfs_size *= self.overhead_factor
 
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, self.mountpoint, rootfs_size))
@@ -512,6 +514,11 @@ class Wic_Partition(Mic_Partition):
     removedAttrs = Mic_Partition.removedAttrs
 
     def _getParser(self):
+        def overhead_cb (option, opt_str, value, parser):
+            if (value < 1):
+                raise OptionValueError("Option %s: invalid value: %r" % (option, value))
+            setattr(parser.values, option.dest, value)
+
         op = Mic_Partition._getParser(self)
         # use specified source file to fill the partition
         # and calculate partition size
@@ -529,4 +536,7 @@ class Wic_Partition(Mic_Partition):
         # extra space beyond the partition size
         op.add_option("--extra-space", dest="extra_space", action="store",
                       type="size", nargs=1, default="10M")
+        op.add_option("--overhead-factor", dest="overhead_factor",
+                      action="callback", callback=overhead_cb, type="float",
+                      nargs=1, default=1.3)
         return op
diff --git a/scripts/lib/wic/utils/oe/misc.py b/scripts/lib/wic/utils/oe/misc.py
index fa14fee1abc9..ea9b6e8ec405 100644
--- a/scripts/lib/wic/utils/oe/misc.py
+++ b/scripts/lib/wic/utils/oe/misc.py
@@ -122,7 +122,6 @@ def add_wks_var(key, val):
     wks_vars[key] = val
 
 BOOTDD_EXTRA_SPACE = 16384
-IMAGE_OVERHEAD_FACTOR = 1.3
 
 __bitbake_env_lines = ""
 
-- 
2.1.0




More information about the Openembedded-core mailing list