diff options
author | Ed Bartosh <ed.bartosh@linux.intel.com> | 2017-06-13 14:22:13 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-14 10:18:29 +0100 |
commit | 6a8f4426b071ab97c89f36cc133cc48b4c671e56 (patch) | |
tree | 1f320da52c70cad71ddebe11617136477da562fc /scripts/lib/wic | |
parent | c5fadce5f90c7e49cb5e40943f1c38f95cc13588 (diff) | |
download | poky-6a8f4426b071ab97c89f36cc133cc48b4c671e56.tar.gz |
wic: implement removing directories
Added support for removing directories using mdeltree
utility to Disk.del method
[YOCTO #11283]
(From OE-Core rev: a5fc61d8f290d370f4bc51d4e2a67a5580edb1b1)
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')
-rw-r--r-- | scripts/lib/wic/engine.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py index 6fc8bb72c3..2c899dd386 100644 --- a/scripts/lib/wic/engine.py +++ b/scripts/lib/wic/engine.py | |||
@@ -239,6 +239,7 @@ class Disk: | |||
239 | self._mdir = None | 239 | self._mdir = None |
240 | self._mcopy = None | 240 | self._mcopy = None |
241 | self._mdel = None | 241 | self._mdel = None |
242 | self._mdeltree = None | ||
242 | self._partimages = {} | 243 | self._partimages = {} |
243 | 244 | ||
244 | # find parted | 245 | # find parted |
@@ -290,6 +291,10 @@ class Disk: | |||
290 | def mdel(self): | 291 | def mdel(self): |
291 | return self._prop("mdel") | 292 | return self._prop("mdel") |
292 | 293 | ||
294 | @property | ||
295 | def mdeltree(self): | ||
296 | return self._prop("mdeltree") | ||
297 | |||
293 | def _get_part_image(self, pnum): | 298 | def _get_part_image(self, pnum): |
294 | if pnum not in self.partitions: | 299 | if pnum not in self.partitions: |
295 | raise WicError("Partition %s is not in the image") | 300 | raise WicError("Partition %s is not in the image") |
@@ -325,10 +330,19 @@ class Disk: | |||
325 | 330 | ||
326 | def remove(self, pnum, path): | 331 | def remove(self, pnum, path): |
327 | """Remove files/dirs from the partition.""" | 332 | """Remove files/dirs from the partition.""" |
328 | cmd = "{} -i {} ::{}".format(self.mdel, | 333 | partimg = self._get_part_image(pnum) |
329 | self._get_part_image(pnum), | 334 | cmd = "{} -i {} ::{}".format(self.mdel, partimg, path) |
330 | path) | 335 | try: |
331 | exec_cmd(cmd) | 336 | exec_cmd(cmd) |
337 | except WicError as err: | ||
338 | if "not found" in str(err) or "non empty" in str(err): | ||
339 | # mdel outputs 'File ... not found' or 'directory .. non empty" | ||
340 | # try to use mdeltree as path could be a directory | ||
341 | cmd = "{} -i {} ::{}".format(self.mdeltree, | ||
342 | partimg, path) | ||
343 | exec_cmd(cmd) | ||
344 | else: | ||
345 | raise err | ||
332 | self._put_part_image(pnum) | 346 | self._put_part_image(pnum) |
333 | 347 | ||
334 | def wic_ls(args, native_sysroot): | 348 | def wic_ls(args, native_sysroot): |