diff options
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 7bb7b4aae3..b433489a84 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -429,12 +429,13 @@ class DataSmart(MutableMapping): | |||
429 | continue | 429 | continue |
430 | 430 | ||
431 | if op == "_append": | 431 | if op == "_append": |
432 | sval = self.getVar(append, False) or "" | 432 | apps = self.getVarFlag(append, "_appendactive", False) or [] |
433 | sval += a | 433 | apps.extend([a]) |
434 | self.setVar(append, sval) | 434 | self.setVarFlag(append, "_appendactive", apps, ignore=True) |
435 | elif op == "_prepend": | 435 | elif op == "_prepend": |
436 | sval = a + (self.getVar(append, False) or "") | 436 | prepends = self.getVarFlag(append, "_prependactive", False) or [] |
437 | self.setVar(append, sval) | 437 | prepends.extend([a]) |
438 | self.setVarFlag(append, "_prependactive", prepends, ignore=True) | ||
438 | elif op == "_remove": | 439 | elif op == "_remove": |
439 | removes = self.getVarFlag(append, "_removeactive", False) or [] | 440 | removes = self.getVarFlag(append, "_removeactive", False) or [] |
440 | removes.extend(a.split()) | 441 | removes.extend(a.split()) |
@@ -507,6 +508,11 @@ class DataSmart(MutableMapping): | |||
507 | if not var in self.dict: | 508 | if not var in self.dict: |
508 | self._makeShadowCopy(var) | 509 | self._makeShadowCopy(var) |
509 | 510 | ||
511 | if "_appendactive" in self.dict[var]: | ||
512 | del self.dict[var]["_appendactive"] | ||
513 | if "_prependactive" in self.dict[var]: | ||
514 | del self.dict[var]["_prependactive"] | ||
515 | |||
510 | # more cookies for the cookie monster | 516 | # more cookies for the cookie monster |
511 | if '_' in var: | 517 | if '_' in var: |
512 | self._setvar_update_overrides(var) | 518 | self._setvar_update_overrides(var) |
@@ -612,6 +618,17 @@ class DataSmart(MutableMapping): | |||
612 | value = copy.copy(local_var[flag]) | 618 | value = copy.copy(local_var[flag]) |
613 | elif flag == "_content" and "_defaultval" in local_var and not noweakdefault: | 619 | elif flag == "_content" and "_defaultval" in local_var and not noweakdefault: |
614 | value = copy.copy(local_var["_defaultval"]) | 620 | value = copy.copy(local_var["_defaultval"]) |
621 | |||
622 | if flag == "_content" and local_var is not None and "_appendactive" in local_var: | ||
623 | if not value: | ||
624 | value = "" | ||
625 | for r in local_var["_appendactive"]: | ||
626 | value = value + r | ||
627 | if flag == "_content" and local_var is not None and "_prependactive" in local_var: | ||
628 | if not value: | ||
629 | value = "" | ||
630 | for r in local_var["_prependactive"]: | ||
631 | value = r + value | ||
615 | if expand and value: | 632 | if expand and value: |
616 | # Only getvar (flag == _content) hits the expand cache | 633 | # Only getvar (flag == _content) hits the expand cache |
617 | cachename = None | 634 | cachename = None |