summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-29 10:33:04 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-12 22:50:46 +0100
commit816acb6ee8ca8ac8791bf89c32aa45f808d5d52f (patch)
treea1854232007e08bd001dcbd1c2a2caddcfe2398d /bitbake/lib
parent0ac9c80e0866b095b2c2376801224a9c2c1ef39e (diff)
downloadpoky-816acb6ee8ca8ac8791bf89c32aa45f808d5d52f.tar.gz
bitbake: data_smart: Cache set(self.overrides)
This performs better than continually regeneratiing the set(). Also only use set comparisions when its necessary to save some overhead as issubset() is slower in the single item case. (Bitbake rev: db9a4eedcf78969ec50bf0e4a8defba8ff0daa4a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/data_smart.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index c91b51f686..941c158f7d 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -369,7 +369,9 @@ class DataSmart(MutableMapping):
369 self.inoverride = True 369 self.inoverride = True
370 # Can end up here recursively so setup dummy values 370 # Can end up here recursively so setup dummy values
371 self.overrides = [] 371 self.overrides = []
372 self.overridesset = set()
372 self.overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] 373 self.overrides = (self.getVar("OVERRIDES", True) or "").split(":") or []
374 self.overridesset = set(self.overrides)
373 self.inoverride = False 375 self.inoverride = False
374 self.expand_cache = {} 376 self.expand_cache = {}
375 377
@@ -450,10 +452,10 @@ class DataSmart(MutableMapping):
450 active = [] 452 active = []
451 self.need_overrides() 453 self.need_overrides()
452 for (r, o) in self.overridedata[var]: 454 for (r, o) in self.overridedata[var]:
453 if o in self.overrides: 455 if o in self.overridesset:
454 active.append(r) 456 active.append(r)
455 elif "_" in o: 457 elif "_" in o:
456 if set(o.split("_")).issubset(set(self.overrides)): 458 if set(o.split("_")).issubset(self.overridesset):
457 active.append(r) 459 active.append(r)
458 for a in active: 460 for a in active:
459 self.delVar(a) 461 self.delVar(a)
@@ -600,10 +602,12 @@ class DataSmart(MutableMapping):
600 self.need_overrides() 602 self.need_overrides()
601 for (r, o) in self.overridedata[var]: 603 for (r, o) in self.overridedata[var]:
602 # What about double overrides both with "_" in the name? 604 # What about double overrides both with "_" in the name?
603 if o in self.overrides: 605 if o in self.overridesset:
604 active[o] = r
605 elif set(o.split("_")).issubset(set(self.overrides)):
606 active[o] = r 606 active[o] = r
607 elif "_" in o:
608 if set(o.split("_")).issubset(self.overridesset):
609 active[o] = r
610
607 mod = True 611 mod = True
608 while mod: 612 while mod:
609 mod = False 613 mod = False