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:22 +0100 |
commit | a5fc61d8f290d370f4bc51d4e2a67a5580edb1b1 (patch) | |
tree | 225b904e9a432910526e333dfbbec17be2190d18 /scripts/lib | |
parent | 4abf2d2643c58322d96d63d5f3ffaf52d62c6792 (diff) | |
download | openembedded-core-a5fc61d8f290d370f4bc51d4e2a67a5580edb1b1.tar.gz openembedded-core-a5fc61d8f290d370f4bc51d4e2a67a5580edb1b1.tar.bz2 openembedded-core-a5fc61d8f290d370f4bc51d4e2a67a5580edb1b1.zip |
wic: implement removing directories
Added support for removing directories using mdeltree
utility to Disk.del method
[YOCTO #11283]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-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: self._mdir = None self._mcopy = None self._mdel = None + self._mdeltree = None self._partimages = {} # find parted @@ -290,6 +291,10 @@ class Disk: def mdel(self): return self._prop("mdel") + @property + def mdeltree(self): + return self._prop("mdeltree") + def _get_part_image(self, pnum): if pnum not in self.partitions: raise WicError("Partition %s is not in the image") @@ -325,10 +330,19 @@ class Disk: def remove(self, pnum, path): """Remove files/dirs from the partition.""" - cmd = "{} -i {} ::{}".format(self.mdel, - self._get_part_image(pnum), - path) - exec_cmd(cmd) + partimg = self._get_part_image(pnum) + cmd = "{} -i {} ::{}".format(self.mdel, partimg, path) + try: + exec_cmd(cmd) + except WicError as err: + if "not found" in str(err) or "non empty" in str(err): + # mdel outputs 'File ... not found' or 'directory .. non empty" + # try to use mdeltree as path could be a directory + cmd = "{} -i {} ::{}".format(self.mdeltree, + partimg, path) + exec_cmd(cmd) + else: + raise err self._put_part_image(pnum) def wic_ls(args, native_sysroot): |