mirror of
https://git.yoctoproject.org/poky
synced 2026-09-14 21:49:33 +02:00
Move LAYERDIR expansion hack into DataSmart
(Bitbake rev: 40778a6e9e82c7ea4673a74fc19574430fa63e8d) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
committed by
Richard Purdie
parent
717f13d63c
commit
d951aa40a0
@@ -502,19 +502,7 @@ class BBCooker:
|
|||||||
parselog.debug(2, "Adding layer %s", layer)
|
parselog.debug(2, "Adding layer %s", layer)
|
||||||
bb.data.setVar('LAYERDIR', layer, data)
|
bb.data.setVar('LAYERDIR', layer, data)
|
||||||
data = _parse(os.path.join(layer, "conf", "layer.conf"), data)
|
data = _parse(os.path.join(layer, "conf", "layer.conf"), data)
|
||||||
|
data.expandVarref('LAYERDIR')
|
||||||
# XXX: Hack, relies on the local keys of the datasmart
|
|
||||||
# instance being stored in the 'dict' attribute and makes
|
|
||||||
# assumptions about how variable expansion works, but
|
|
||||||
# there's no better way to force an expansion of a single
|
|
||||||
# variable across the datastore today, and this at least
|
|
||||||
# lets us reference LAYERDIR without having to immediately
|
|
||||||
# eval all our variables that use it.
|
|
||||||
for key in data.dict:
|
|
||||||
if key != "_data":
|
|
||||||
value = data.getVar(key, False)
|
|
||||||
if value and "${LAYERDIR}" in value:
|
|
||||||
data.setVar(key, value.replace("${LAYERDIR}", layer))
|
|
||||||
|
|
||||||
bb.data.delVar('LAYERDIR', data)
|
bb.data.delVar('LAYERDIR', data)
|
||||||
|
|
||||||
|
|||||||
@@ -361,6 +361,27 @@ class DataSmart(MutableMapping):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def expandVarref(self, variable, parents=False):
|
||||||
|
"""Find all references to variable in the data and expand it
|
||||||
|
in place, optionally descending to parent datastores."""
|
||||||
|
|
||||||
|
if parents:
|
||||||
|
keys = iter(self)
|
||||||
|
else:
|
||||||
|
keys = self.localkeys()
|
||||||
|
|
||||||
|
ref = '${%s}' % variable
|
||||||
|
value = self.getVar(variable, False)
|
||||||
|
for key in keys:
|
||||||
|
referrervalue = self.getVar(key, False)
|
||||||
|
if ref in referrervalue:
|
||||||
|
self.setVar(key, referrervalue.replace(ref, value))
|
||||||
|
|
||||||
|
def localkeys(self):
|
||||||
|
for key in self.dict:
|
||||||
|
if key != '_data':
|
||||||
|
yield key
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
seen = set()
|
seen = set()
|
||||||
def _keys(d):
|
def _keys(d):
|
||||||
|
|||||||
Reference in New Issue
Block a user