summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/plugins/imager/direct.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/wic/plugins/imager/direct.py')
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py36
1 files changed, 11 insertions, 25 deletions
diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index f107e60089..7e1c1c03ab 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -58,7 +58,7 @@ class DirectPlugin(ImagerPlugin):
58 self.compressor = options.compressor 58 self.compressor = options.compressor
59 self.bmap = options.bmap 59 self.bmap = options.bmap
60 self.no_fstab_update = options.no_fstab_update 60 self.no_fstab_update = options.no_fstab_update
61 self.original_fstab = None 61 self.updated_fstab_path = None
62 62
63 self.name = "%s-%s" % (os.path.splitext(os.path.basename(wks_file))[0], 63 self.name = "%s-%s" % (os.path.splitext(os.path.basename(wks_file))[0],
64 strftime("%Y%m%d%H%M")) 64 strftime("%Y%m%d%H%M"))
@@ -100,11 +100,8 @@ class DirectPlugin(ImagerPlugin):
100 finally: 100 finally:
101 self.cleanup() 101 self.cleanup()
102 102
103 def _write_fstab(self, image_rootfs): 103 def update_fstab(self, image_rootfs):
104 """overriden to generate fstab (temporarily) in rootfs. This is called 104 """Assume partition order same as in wks"""
105 from _create, make sure it doesn't get called from
106 BaseImage.create()
107 """
108 if not image_rootfs: 105 if not image_rootfs:
109 return 106 return
110 107
@@ -114,18 +111,9 @@ class DirectPlugin(ImagerPlugin):
114 111
115 with open(fstab_path) as fstab: 112 with open(fstab_path) as fstab:
116 fstab_lines = fstab.readlines() 113 fstab_lines = fstab.readlines()
117 self.original_fstab = fstab_lines.copy()
118
119 if self._update_fstab(fstab_lines, self.parts):
120 with open(fstab_path, "w") as fstab:
121 fstab.writelines(fstab_lines)
122 else:
123 self.original_fstab = None
124 114
125 def _update_fstab(self, fstab_lines, parts):
126 """Assume partition order same as in wks"""
127 updated = False 115 updated = False
128 for part in parts: 116 for part in self.parts:
129 if not part.realnum or not part.mountpoint \ 117 if not part.realnum or not part.mountpoint \
130 or part.mountpoint == "/": 118 or part.mountpoint == "/":
131 continue 119 continue
@@ -154,7 +142,10 @@ class DirectPlugin(ImagerPlugin):
154 fstab_lines.append(line) 142 fstab_lines.append(line)
155 updated = True 143 updated = True
156 144
157 return updated 145 if updated:
146 self.updated_fstab_path = os.path.join(self.workdir, "fstab")
147 with open(self.updated_fstab_path, "w") as f:
148 f.writelines(fstab_lines)
158 149
159 def _full_path(self, path, name, extention): 150 def _full_path(self, path, name, extention):
160 """ Construct full file path to a file we generate. """ 151 """ Construct full file path to a file we generate. """
@@ -170,7 +161,7 @@ class DirectPlugin(ImagerPlugin):
170 a partitioned image. 161 a partitioned image.
171 """ 162 """
172 if not self.no_fstab_update: 163 if not self.no_fstab_update:
173 self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) 164 self.update_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
174 165
175 for part in self.parts: 166 for part in self.parts:
176 # get rootfs size from bitbake variable if it's not set in .ks file 167 # get rootfs size from bitbake variable if it's not set in .ks file
@@ -283,12 +274,6 @@ class DirectPlugin(ImagerPlugin):
283 if os.path.isfile(path): 274 if os.path.isfile(path):
284 shutil.move(path, os.path.join(self.outdir, fname)) 275 shutil.move(path, os.path.join(self.outdir, fname))
285 276
286 #Restore original fstab
287 if self.original_fstab:
288 fstab_path = self.rootfs_dir.get("ROOTFS_DIR") + "/etc/fstab"
289 with open(fstab_path, "w") as fstab:
290 fstab.writelines(self.original_fstab)
291
292 # remove work directory 277 # remove work directory
293 shutil.rmtree(self.workdir, ignore_errors=True) 278 shutil.rmtree(self.workdir, ignore_errors=True)
294 279
@@ -368,7 +353,8 @@ class PartitionedImage():
368 # sizes before we can add them and do the layout. 353 # sizes before we can add them and do the layout.
369 part.prepare(imager, imager.workdir, imager.oe_builddir, 354 part.prepare(imager, imager.workdir, imager.oe_builddir,
370 imager.rootfs_dir, imager.bootimg_dir, 355 imager.rootfs_dir, imager.bootimg_dir,
371 imager.kernel_dir, imager.native_sysroot) 356 imager.kernel_dir, imager.native_sysroot,
357 imager.updated_fstab_path)
372 358
373 # Converting kB to sectors for parted 359 # Converting kB to sectors for parted
374 part.size_sec = part.disk_size * 1024 // self.sector_size 360 part.size_sec = part.disk_size * 1024 // self.sector_size