summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/plugins/imager/direct.py
diff options
context:
space:
mode:
authorEd Bartosh <ed.bartosh@linux.intel.com>2017-02-10 12:41:15 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-02-15 20:06:45 -0800
commit58528cd5a7fbf8248257535055ef03b075e2b3c4 (patch)
tree685e3370b1cf27d9cb865b62b0d03c2527bebd45 /scripts/lib/wic/plugins/imager/direct.py
parentd5f42cad0ce148aa55c09ce5369202736d6dd639 (diff)
downloadpoky-58528cd5a7fbf8248257535055ef03b075e2b3c4.tar.gz
wic: direct: move UUID generation to PartitionedImage
Moved code that generates partition UUIDs from DirectPlugin to PartitionedImage class as it's more logical to have it there. This allows the code to be reused by other imager plugins. Got rid of having yet another list of partitions in PartitionedImage. Reused the list passed from DirectPlugin. (From OE-Core rev: 20c70dd617d4abfff507e210610a58a9989f7c9b) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/wic/plugins/imager/direct.py')
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py23
1 files changed, 11 insertions, 12 deletions
diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index ffe6c8406d..18cd2773d1 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -158,7 +158,7 @@ class DirectPlugin(ImagerPlugin):
158 """ 158 """
159 image_path = self._full_path(self.workdir, self.parts[0].disk, "direct") 159 image_path = self._full_path(self.workdir, self.parts[0].disk, "direct")
160 self._image = PartitionedImage(image_path, self.ptable_format, 160 self._image = PartitionedImage(image_path, self.ptable_format,
161 self.native_sysroot) 161 self.parts, self.native_sysroot)
162 162
163 for part in self.parts: 163 for part in self.parts:
164 # as a convenience, set source to the boot partition source 164 # as a convenience, set source to the boot partition source
@@ -166,13 +166,6 @@ class DirectPlugin(ImagerPlugin):
166 if not self.ks.bootloader.source and part.mountpoint == "/boot": 166 if not self.ks.bootloader.source and part.mountpoint == "/boot":
167 self.ks.bootloader.source = part.source 167 self.ks.bootloader.source = part.source
168 168
169 # generate parition UUIDs
170 if not part.uuid and part.use_uuid:
171 if self.ptable_format == 'gpt':
172 part.uuid = str(uuid.uuid4())
173 else: # msdos partition table
174 part.uuid = '%0x-%02d' % (self._image.identifier, part.realnum)
175
176 fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) 169 fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
177 170
178 for part in self.parts: 171 for part in self.parts:
@@ -310,7 +303,7 @@ class PartitionedImage():
310 Partitioned image in a file. 303 Partitioned image in a file.
311 """ 304 """
312 305
313 def __init__(self, path, ptable_format, native_sysroot=None): 306 def __init__(self, path, ptable_format, partitions, native_sysroot=None):
314 self.path = path # Path to the image file 307 self.path = path # Path to the image file
315 self.numpart = 0 # Number of allocated partitions 308 self.numpart = 0 # Number of allocated partitions
316 self.realpart = 0 # Number of partitions in the partition table 309 self.realpart = 0 # Number of partitions in the partition table
@@ -321,12 +314,20 @@ class PartitionedImage():
321 # Disk system identifier 314 # Disk system identifier
322 self.identifier = int.from_bytes(os.urandom(4), 'little') 315 self.identifier = int.from_bytes(os.urandom(4), 'little')
323 316
324 self.partitions = [] 317 self.partitions = partitions
325 self.partimages = [] 318 self.partimages = []
326 # Size of a sector used in calculations 319 # Size of a sector used in calculations
327 self.sector_size = SECTOR_SIZE 320 self.sector_size = SECTOR_SIZE
328 self.native_sysroot = native_sysroot 321 self.native_sysroot = native_sysroot
329 322
323 # generate parition UUIDs
324 for part in self.partitions:
325 if not part.uuid and part.use_uuid:
326 if self.ptable_format == 'gpt':
327 part.uuid = str(uuid.uuid4())
328 else: # msdos partition table
329 part.uuid = '%0x-%02d' % (self.identifier, part.realnum)
330
330 def add_partition(self, part): 331 def add_partition(self, part):
331 """ 332 """
332 Add the next partition. Partitions have to be added in the 333 Add the next partition. Partitions have to be added in the
@@ -337,8 +338,6 @@ class PartitionedImage():
337 # Converting kB to sectors for parted 338 # Converting kB to sectors for parted
338 part.size_sec = part.disk_size * 1024 // self.sector_size 339 part.size_sec = part.disk_size * 1024 // self.sector_size
339 340
340 self.partitions.append(part)
341
342 def layout_partitions(self): 341 def layout_partitions(self):
343 """ Layout the partitions, meaning calculate the position of every 342 """ Layout the partitions, meaning calculate the position of every
344 partition on the disk. The 'ptable_format' parameter defines the 343 partition on the disk. The 'ptable_format' parameter defines the