wic: direct: add 'realnum' attribute to partition
Replaced call of _get_part_num method with an attribute. This eliminates the need to call the method and loop over partitions every time we need to know realnum for partition. (From OE-Core rev: 96a26b6ddf22346dafa06b00816579439e98445f) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
77dc8e6ef3
commit
d5f42cad0c
|
@ -74,6 +74,19 @@ class DirectPlugin(ImagerPlugin):
|
|||
self.ptable_format = self.ks.bootloader.ptable
|
||||
self.parts = self.ks.partitions
|
||||
|
||||
# calculate the real partition number, accounting for partitions not
|
||||
# in the partition table and logical partitions
|
||||
realnum = 0
|
||||
for part in self.parts:
|
||||
if part.no_table:
|
||||
part.realnum = 0
|
||||
else:
|
||||
realnum += 1
|
||||
if self.ptable_format == 'msdos' and realnum > 3:
|
||||
part.realnum = realnum + 1
|
||||
continue
|
||||
part.realnum = realnum
|
||||
|
||||
def do_create(self):
|
||||
"""
|
||||
Plugin entry point.
|
||||
|
@ -86,22 +99,6 @@ class DirectPlugin(ImagerPlugin):
|
|||
finally:
|
||||
self.cleanup()
|
||||
|
||||
def _get_part_num(self, num, parts):
|
||||
"""calculate the real partition number, accounting for partitions not
|
||||
in the partition table and logical partitions
|
||||
"""
|
||||
realnum = 0
|
||||
for pnum, part in enumerate(parts, 1):
|
||||
if not part.no_table:
|
||||
realnum += 1
|
||||
if pnum == num:
|
||||
if part.no_table:
|
||||
return 0
|
||||
if self.ptable_format == 'msdos' and realnum > 3:
|
||||
# account for logical partition numbering, ex. sda5..
|
||||
return realnum + 1
|
||||
return realnum
|
||||
|
||||
def _write_fstab(self, image_rootfs):
|
||||
"""overriden to generate fstab (temporarily) in rootfs. This is called
|
||||
from _create, make sure it doesn't get called from
|
||||
|
@ -128,15 +125,14 @@ class DirectPlugin(ImagerPlugin):
|
|||
def _update_fstab(self, fstab_lines, parts):
|
||||
"""Assume partition order same as in wks"""
|
||||
updated = False
|
||||
for num, part in enumerate(parts, 1):
|
||||
pnum = self._get_part_num(num, parts)
|
||||
if not pnum or not part.mountpoint \
|
||||
for part in parts:
|
||||
if not part.realnum or not part.mountpoint \
|
||||
or part.mountpoint in ("/", "/boot"):
|
||||
continue
|
||||
|
||||
# mmc device partitions are named mmcblk0p1, mmcblk0p2..
|
||||
prefix = 'p' if part.disk.startswith('mmcblk') else ''
|
||||
device_name = "/dev/%s%s%d" % (part.disk, prefix, pnum)
|
||||
device_name = "/dev/%s%s%d" % (part.disk, prefix, part.realnum)
|
||||
|
||||
opts = part.fsopts if part.fsopts else "defaults"
|
||||
line = "\t".join([device_name, part.mountpoint, part.fstype,
|
||||
|
@ -164,7 +160,7 @@ class DirectPlugin(ImagerPlugin):
|
|||
self._image = PartitionedImage(image_path, self.ptable_format,
|
||||
self.native_sysroot)
|
||||
|
||||
for num, part in enumerate(self.parts, 1):
|
||||
for part in self.parts:
|
||||
# as a convenience, set source to the boot partition source
|
||||
# instead of forcing it to be set via bootloader --source
|
||||
if not self.ks.bootloader.source and part.mountpoint == "/boot":
|
||||
|
@ -175,8 +171,7 @@ class DirectPlugin(ImagerPlugin):
|
|||
if self.ptable_format == 'gpt':
|
||||
part.uuid = str(uuid.uuid4())
|
||||
else: # msdos partition table
|
||||
part.uuid = '%0x-%02d' % (self._image.identifier,
|
||||
self._get_part_num(num, self.parts))
|
||||
part.uuid = '%0x-%02d' % (self._image.identifier, part.realnum)
|
||||
|
||||
fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
|
||||
|
||||
|
@ -277,14 +272,13 @@ class DirectPlugin(ImagerPlugin):
|
|||
|
||||
Assume partition order same as in wks
|
||||
"""
|
||||
for num, part in enumerate(self.parts, 1):
|
||||
for part in self.parts:
|
||||
if part.mountpoint == "/":
|
||||
if part.uuid:
|
||||
return "PARTUUID=%s" % part.uuid
|
||||
else:
|
||||
suffix = 'p' if part.disk.startswith('mmcblk') else ''
|
||||
pnum = self._get_part_num(num, self.parts)
|
||||
return "/dev/%s%s%-d" % (part.disk, suffix, pnum)
|
||||
return "/dev/%s%s%-d" % (part.disk, suffix, part.realnum)
|
||||
|
||||
def cleanup(self):
|
||||
if self._image:
|
||||
|
|
Loading…
Reference in New Issue