From a671ced0ea7c5775d2f2699d3a720c6d0c11f743 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 7 May 2014 10:20:17 +0100 Subject: bitbake: data_smart: Ensure all possible overrides are cached including those with '_' in the name Unfortunately we've been neglecting to pay the correct tributes to the cookie monster and hence the datastore is malfunctioning. Currently tributes are only paid on the last part of a variable after the last "_" character. We need to split by *all* "_" characters since an override may contain the character. This fixes the code so the correct number of tributes are made. Paradoxically parsing appears to be faster after this change. (Bitbake rev: d1c712fd3a59fa804e6fd451612c30487671f3a2) Signed-off-by: Richard Purdie --- bitbake/lib/bb/data_smart.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'bitbake/lib/bb/data_smart.py') diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index e4bdb2fdd9..46a0221e10 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -513,10 +513,15 @@ class DataSmart(MutableMapping): def _setvar_update_overrides(self, var): # aka pay the cookie monster override = var[var.rfind('_')+1:] - if len(override) > 0: + shortvar = var[:var.rfind('_')] + while override: if override not in self._seen_overrides: self._seen_overrides[override] = set() self._seen_overrides[override].add( var ) + override = None + if "_" in shortvar: + override = var[shortvar.rfind('_')+1:] + shortvar = var[:shortvar.rfind('_')] def getVar(self, var, expand=False, noweakdefault=False): return self.getVarFlag(var, "_content", expand, noweakdefault) -- cgit v1.2.3-54-g00ecf