wic: Honor --size for --source partititions
Instead of simply creating partitions large enough to contain the contents of a --source partition (and adding a pre-specified amount of padding), use the --size used in the partition .wks statement. If --size isn't used, or is smaller than the actual --source size, retain the current behavior. (From OE-Core rev: 23b6c5ea4d48cdf731e5202991961a0e4b10ff29) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8d008aa840
commit
df634f3b1e
|
@ -56,6 +56,12 @@ class Wic_PartData(Mic_PartData):
|
|||
|
||||
return retval
|
||||
|
||||
def get_size(self):
|
||||
"""
|
||||
Accessor for partition size, 0 or --size before set_size().
|
||||
"""
|
||||
return self.size
|
||||
|
||||
def set_size(self, size):
|
||||
"""
|
||||
Accessor for actual partition size, which must be set by source
|
||||
|
@ -70,6 +76,29 @@ class Wic_PartData(Mic_PartData):
|
|||
"""
|
||||
self.source_file = source_file
|
||||
|
||||
def get_extra_block_count(self, current_blocks):
|
||||
"""
|
||||
The --size param is reflected in self.size (in MB), and we already
|
||||
have current_blocks (1k) blocks, calculate and return the
|
||||
number of (1k) blocks we need to add to get to --size, 0 if
|
||||
we're already there or beyond.
|
||||
"""
|
||||
msger.debug("Requested partition size for %s: %d" % \
|
||||
(self.mountpoint, self.size))
|
||||
|
||||
if not self.size:
|
||||
return 0
|
||||
|
||||
requested_blocks = self.size * 1024
|
||||
|
||||
msger.debug("Requested blocks %d, current_blocks %d" % \
|
||||
(requested_blocks, current_blocks))
|
||||
|
||||
if requested_blocks > current_blocks:
|
||||
return requested_blocks - current_blocks
|
||||
else:
|
||||
return 0
|
||||
|
||||
def prepare(self, cr, cr_workdir, oe_builddir, rootfs_dir, bootimg_dir,
|
||||
kernel_dir, native_sysroot):
|
||||
"""
|
||||
|
@ -147,16 +176,22 @@ class Wic_PartData(Mic_PartData):
|
|||
"""
|
||||
populate_script = "%s/usr/bin/populate-extfs.sh" % native_sysroot
|
||||
|
||||
image_extra_space = 10240
|
||||
|
||||
image_rootfs = rootfs_dir
|
||||
rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype)
|
||||
|
||||
du_cmd = "du -ks %s" % image_rootfs
|
||||
rc, out = exec_cmd(du_cmd)
|
||||
actual_rootfs_size = out.split()[0]
|
||||
actual_rootfs_size = int(out.split()[0])
|
||||
|
||||
rootfs_size = int(actual_rootfs_size) + image_extra_space
|
||||
extra_blocks = self.get_extra_block_count(actual_rootfs_size)
|
||||
|
||||
if extra_blocks < IMAGE_EXTRA_SPACE:
|
||||
extra_blocks = IMAGE_EXTRA_SPACE
|
||||
|
||||
rootfs_size = actual_rootfs_size + extra_blocks
|
||||
|
||||
msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
|
||||
(extra_blocks, self.mountpoint, rootfs_size))
|
||||
|
||||
dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \
|
||||
(rootfs, rootfs_size)
|
||||
|
@ -187,16 +222,22 @@ class Wic_PartData(Mic_PartData):
|
|||
|
||||
Currently handles ext2/3/4 and btrfs.
|
||||
"""
|
||||
image_extra_space = 10240
|
||||
|
||||
image_rootfs = rootfs_dir
|
||||
rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype)
|
||||
|
||||
du_cmd = "du -ks %s" % image_rootfs
|
||||
rc, out = exec_cmd(du_cmd)
|
||||
actual_rootfs_size = out.split()[0]
|
||||
actual_rootfs_size = int(out.split()[0])
|
||||
|
||||
rootfs_size = int(actual_rootfs_size) + image_extra_space
|
||||
extra_blocks = self.get_extra_block_count(actual_rootfs_size)
|
||||
|
||||
if extra_blocks < IMAGE_EXTRA_SPACE:
|
||||
extra_blocks = IMAGE_EXTRA_SPACE
|
||||
|
||||
rootfs_size = actual_rootfs_size + extra_blocks
|
||||
|
||||
msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
|
||||
(extra_blocks, self.mountpoint, rootfs_size))
|
||||
|
||||
dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \
|
||||
(rootfs, rootfs_size)
|
||||
|
|
|
@ -131,7 +131,15 @@ class BootimgEFIPlugin(SourcePlugin):
|
|||
rc, out = exec_cmd(du_cmd)
|
||||
blocks = int(out.split()[0])
|
||||
|
||||
blocks += BOOTDD_EXTRA_SPACE
|
||||
extra_blocks = part.get_extra_block_count(blocks)
|
||||
|
||||
if extra_blocks < BOOTDD_EXTRA_SPACE:
|
||||
extra_blocks = BOOTDD_EXTRA_SPACE
|
||||
|
||||
blocks += extra_blocks
|
||||
|
||||
msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
|
||||
(extra_blocks, part.mountpoint, blocks))
|
||||
|
||||
# Ensure total sectors is an integral number of sectors per
|
||||
# track or mcopy will complain. Sectors are 512 bytes, and we
|
||||
|
|
|
@ -154,7 +154,15 @@ class BootimgPcbiosPlugin(SourcePlugin):
|
|||
rc, out = exec_cmd(du_cmd)
|
||||
blocks = int(out.split()[0])
|
||||
|
||||
blocks += BOOTDD_EXTRA_SPACE
|
||||
extra_blocks = part.get_extra_block_count(blocks)
|
||||
|
||||
if extra_blocks < BOOTDD_EXTRA_SPACE:
|
||||
extra_blocks = BOOTDD_EXTRA_SPACE
|
||||
|
||||
blocks += extra_blocks
|
||||
|
||||
msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
|
||||
(extra_blocks, part.mountpoint, blocks))
|
||||
|
||||
# Ensure total sectors is an integral number of sectors per
|
||||
# track or mcopy will complain. Sectors are 512 bytes, and we
|
||||
|
|
|
@ -108,6 +108,7 @@ def add_wks_var(key, val):
|
|||
wks_vars[key] = val
|
||||
|
||||
BOOTDD_EXTRA_SPACE = 16384
|
||||
IMAGE_EXTRA_SPACE = 10240
|
||||
|
||||
__bitbake_env_lines = ""
|
||||
|
||||
|
|
Loading…
Reference in New Issue