summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Bartosh <ed.bartosh@linux.intel.com>2017-08-25 23:12:22 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-27 22:29:45 +0100
commitd1a831a9870bc31e936eb480485b28f1ffc13080 (patch)
tree5c33730400080db9e17d9f7e6e9350bf6eccf987
parentdcceb90516efc77e4d0cddc3caf4e203ab9321d6 (diff)
downloadopenembedded-core-contrib-d1a831a9870bc31e936eb480485b28f1ffc13080.tar.gz
openembedded-core-contrib-d1a831a9870bc31e936eb480485b28f1ffc13080.tar.bz2
openembedded-core-contrib-d1a831a9870bc31e936eb480485b28f1ffc13080.zip
wic: reimplement getting paths of used tools
So far every used tool have to have separate property and private attribute in the Disk class. This is too verbose, considering that there will be much more tools used. Reimplemented getting tools paths using custom __getattr__ method. This is much more compact and readable. Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--scripts/lib/wic/engine.py36
1 files changed, 9 insertions, 27 deletions
diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py
index 2dc2fd5ed4..b23dd65de2 100644
--- a/scripts/lib/wic/engine.py
+++ b/scripts/lib/wic/engine.py
@@ -236,10 +236,6 @@ class Disk:
self.imagepath = imagepath
self.native_sysroot = native_sysroot
self._partitions = None
- self._mdir = None
- self._mcopy = None
- self._mdel = None
- self._mdeltree = None
self._partimages = {}
# find parted
@@ -270,30 +266,16 @@ class Disk:
return self._partitions
- def _prop(self, name):
+ def __getattr__(self, name):
"""Get path to the executable in a lazy way."""
- aname = "_%s" % name
- if getattr(self, aname) is None:
- setattr(self, aname, find_executable(name, self.paths))
- if not getattr(self, aname):
- raise WicError("Can't find executable {}".format(name))
- return getattr(self, aname)
-
- @property
- def mdir(self):
- return self._prop('mdir')
-
- @property
- def mcopy(self):
- return self._prop("mcopy")
-
- @property
- def mdel(self):
- return self._prop("mdel")
-
- @property
- def mdeltree(self):
- return self._prop("mdeltree")
+ if name in ("mdir", "mcopy", "mdel", "mdeltree"):
+ aname = "_%s" % name
+ if aname not in self.__dict__:
+ setattr(self, aname, find_executable(name, self.paths))
+ if aname not in self.__dict__:
+ raise WicError("Can't find executable {}".format(name))
+ return self.__dict__[aname]
+ return self.__dict__[name]
def _get_part_image(self, pnum):
if pnum not in self.partitions: