diff options
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index eee5827b29..884ca190a6 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -311,6 +311,7 @@ class DataSmart(MutableMapping): | |||
311 | 311 | ||
312 | self.expand_cache = {} | 312 | self.expand_cache = {} |
313 | 313 | ||
314 | self.overrides = [] | ||
314 | self.overridevars = set(["OVERRIDES", "FILE"]) | 315 | self.overridevars = set(["OVERRIDES", "FILE"]) |
315 | self.replaces = {} | 316 | self.replaces = {} |
316 | 317 | ||
@@ -360,7 +361,7 @@ class DataSmart(MutableMapping): | |||
360 | def internal_finalize(self, parent = False): | 361 | def internal_finalize(self, parent = False): |
361 | """Performs final steps upon the datastore, including application of overrides""" | 362 | """Performs final steps upon the datastore, including application of overrides""" |
362 | 363 | ||
363 | overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] | 364 | self.overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] |
364 | 365 | ||
365 | # | 366 | # |
366 | # Well let us see what breaks here. We used to iterate | 367 | # Well let us see what breaks here. We used to iterate |
@@ -380,7 +381,7 @@ class DataSmart(MutableMapping): | |||
380 | 381 | ||
381 | self.replaces = {} | 382 | self.replaces = {} |
382 | 383 | ||
383 | for o in overrides: | 384 | for o in self.overrides: |
384 | # calculate '_'+override | 385 | # calculate '_'+override |
385 | l = len(o) + 1 | 386 | l = len(o) + 1 |
386 | 387 | ||
@@ -393,6 +394,18 @@ class DataSmart(MutableMapping): | |||
393 | name = var[:-l] | 394 | name = var[:-l] |
394 | self.replaces[name] = var | 395 | self.replaces[name] = var |
395 | 396 | ||
397 | def internal_finalize2(self, var, o): | ||
398 | """Performs final steps upon the datastore, including application of overrides""" | ||
399 | |||
400 | l = len(o) + 1 | ||
401 | name = var[:-l] | ||
402 | |||
403 | if name in self.replaces: | ||
404 | del self.replaces[name] | ||
405 | for o in self.overrides: | ||
406 | if o in self._seen_overrides and name + "_" + o in self._seen_overrides[o]: | ||
407 | self.replaces[name] = name + "_" + o | ||
408 | |||
396 | def initVar(self, var): | 409 | def initVar(self, var): |
397 | self.expand_cache = {} | 410 | self.expand_cache = {} |
398 | if not var in self.dict: | 411 | if not var in self.dict: |
@@ -457,6 +470,12 @@ class DataSmart(MutableMapping): | |||
457 | if "_prepend" in self.dict[var]: | 470 | if "_prepend" in self.dict[var]: |
458 | del self.dict[var]["_prepend"] | 471 | del self.dict[var]["_prepend"] |
459 | 472 | ||
473 | if var in self.replaces: | ||
474 | del self.replaces[var] | ||
475 | for o in self.overrides: | ||
476 | if o in self._seen_overrides and var + "_" + o in self._seen_overrides[o]: | ||
477 | self.delVar(var + "_" + o) | ||
478 | |||
460 | # more cookies for the cookie monster | 479 | # more cookies for the cookie monster |
461 | if '_' in var: | 480 | if '_' in var: |
462 | self._setvar_update_overrides(var) | 481 | self._setvar_update_overrides(var) |
@@ -477,6 +496,7 @@ class DataSmart(MutableMapping): | |||
477 | if override not in self._seen_overrides: | 496 | if override not in self._seen_overrides: |
478 | self._seen_overrides[override] = set() | 497 | self._seen_overrides[override] = set() |
479 | self._seen_overrides[override].add( var ) | 498 | self._seen_overrides[override].add( var ) |
499 | self.internal_finalize2(var, override) | ||
480 | override = None | 500 | override = None |
481 | if "_" in shortvar: | 501 | if "_" in shortvar: |
482 | override = var[shortvar.rfind('_')+1:] | 502 | override = var[shortvar.rfind('_')+1:] |
@@ -534,6 +554,7 @@ class DataSmart(MutableMapping): | |||
534 | override = var[var.rfind('_')+1:] | 554 | override = var[var.rfind('_')+1:] |
535 | if override and override in self._seen_overrides and var in self._seen_overrides[override]: | 555 | if override and override in self._seen_overrides and var in self._seen_overrides[override]: |
536 | self._seen_overrides[override].remove(var) | 556 | self._seen_overrides[override].remove(var) |
557 | self.internal_finalize2(var, override) | ||
537 | 558 | ||
538 | def setVarFlag(self, var, flag, value, **loginfo): | 559 | def setVarFlag(self, var, flag, value, **loginfo): |
539 | self.expand_cache = {} | 560 | self.expand_cache = {} |
@@ -574,9 +595,8 @@ class DataSmart(MutableMapping): | |||
574 | for (r, o) in local_var["_append"]: | 595 | for (r, o) in local_var["_append"]: |
575 | match = True | 596 | match = True |
576 | if o: | 597 | if o: |
577 | overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] | ||
578 | for o2 in o.split("_"): | 598 | for o2 in o.split("_"): |
579 | if not o2 in overrides: | 599 | if not o2 in self.overrides: |
580 | match = False | 600 | match = False |
581 | if match: | 601 | if match: |
582 | value = value + r | 602 | value = value + r |
@@ -587,9 +607,8 @@ class DataSmart(MutableMapping): | |||
587 | for (r, o) in local_var["_prepend"]: | 607 | for (r, o) in local_var["_prepend"]: |
588 | match = True | 608 | match = True |
589 | if o: | 609 | if o: |
590 | overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] | ||
591 | for o2 in o.split("_"): | 610 | for o2 in o.split("_"): |
592 | if not o2 in overrides: | 611 | if not o2 in self.overrides: |
593 | match = False | 612 | match = False |
594 | if match: | 613 | if match: |
595 | value = r + value | 614 | value = r + value |
@@ -608,9 +627,8 @@ class DataSmart(MutableMapping): | |||
608 | for (r, o) in local_var["_remove"]: | 627 | for (r, o) in local_var["_remove"]: |
609 | match = True | 628 | match = True |
610 | if o: | 629 | if o: |
611 | overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] | ||
612 | for o2 in o.split("_"): | 630 | for o2 in o.split("_"): |
613 | if not o2 in overrides: | 631 | if not o2 in self.overrides: |
614 | match = False | 632 | match = False |
615 | if match: | 633 | if match: |
616 | removes.extend(self.expand(r).split()) | 634 | removes.extend(self.expand(r).split()) |
@@ -716,6 +734,7 @@ class DataSmart(MutableMapping): | |||
716 | 734 | ||
717 | data._tracking = self._tracking | 735 | data._tracking = self._tracking |
718 | 736 | ||
737 | data.overrides = copy.copy(self.overrides) | ||
719 | data.overridevars = copy.copy(self.overridevars) | 738 | data.overridevars = copy.copy(self.overridevars) |
720 | 739 | ||
721 | return data | 740 | return data |