mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
bitbake: data_smart/parse: Allow ':' characters in variable/function names
It is becomming increasingly clear we need to find a way to show what is/is not an override in our syntax. We need to do this in a way which is clear to users, readable and in a way we can transition to. The most effective way I've found to this is to use the ":" charater to directly replace "_" where an override is being specified. This includes "append", "prepend" and "remove" which are effectively special override directives. This patch simply adds the character to the parser so bitbake accepts the value but maps it back to "_" internally so there is no behaviour change. This change is simple enough it could potentially be backported to older version of bitbake meaning layers using the new syntax/markup could work with older releases. Even if other no other changes are accepted at this time and we don't backport, it does set us on a path where at some point in future we could require a more explict syntax. I've tested this patch by converting oe-core/meta-yocto to the new syntax for overrides (9000+ changes) and then seeing that builds continue to work with this patch. (Bitbake rev: aa9f7b80cfdb1119050af469a07ebd949829026c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
7d3fb188bf
commit
f2d2136dbb
|
|
@ -481,6 +481,7 @@ class DataSmart(MutableMapping):
|
|||
|
||||
def setVar(self, var, value, **loginfo):
|
||||
#print("var=" + str(var) + " val=" + str(value))
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
parsing=False
|
||||
if 'parsing' in loginfo:
|
||||
|
|
@ -589,6 +590,8 @@ class DataSmart(MutableMapping):
|
|||
"""
|
||||
Rename the variable key to newkey
|
||||
"""
|
||||
key = key.replace(":", "_")
|
||||
newkey = newkey.replace(":", "_")
|
||||
if key == newkey:
|
||||
bb.warn("Calling renameVar with equivalent keys (%s) is invalid" % key)
|
||||
return
|
||||
|
|
@ -637,6 +640,7 @@ class DataSmart(MutableMapping):
|
|||
self.setVar(var + "_prepend", value, ignore=True, parsing=True)
|
||||
|
||||
def delVar(self, var, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
|
||||
loginfo['detail'] = ""
|
||||
|
|
@ -664,6 +668,7 @@ class DataSmart(MutableMapping):
|
|||
override = None
|
||||
|
||||
def setVarFlag(self, var, flag, value, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
|
||||
if 'op' not in loginfo:
|
||||
|
|
@ -687,6 +692,7 @@ class DataSmart(MutableMapping):
|
|||
self.dict["__exportlist"]["_content"].add(var)
|
||||
|
||||
def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False, retparser=False):
|
||||
var = var.replace(":", "_")
|
||||
if flag == "_content":
|
||||
cachename = var
|
||||
else:
|
||||
|
|
@ -814,6 +820,7 @@ class DataSmart(MutableMapping):
|
|||
return value
|
||||
|
||||
def delVarFlag(self, var, flag, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
|
||||
local_var, _ = self._findVar(var)
|
||||
|
|
@ -831,6 +838,7 @@ class DataSmart(MutableMapping):
|
|||
del self.dict[var][flag]
|
||||
|
||||
def appendVarFlag(self, var, flag, value, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
loginfo['op'] = 'append'
|
||||
loginfo['flag'] = flag
|
||||
self.varhistory.record(**loginfo)
|
||||
|
|
@ -838,6 +846,7 @@ class DataSmart(MutableMapping):
|
|||
self.setVarFlag(var, flag, newvalue, ignore=True)
|
||||
|
||||
def prependVarFlag(self, var, flag, value, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
loginfo['op'] = 'prepend'
|
||||
loginfo['flag'] = flag
|
||||
self.varhistory.record(**loginfo)
|
||||
|
|
@ -845,6 +854,7 @@ class DataSmart(MutableMapping):
|
|||
self.setVarFlag(var, flag, newvalue, ignore=True)
|
||||
|
||||
def setVarFlags(self, var, flags, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
infer_caller_details(loginfo)
|
||||
if not var in self.dict:
|
||||
|
|
@ -859,6 +869,7 @@ class DataSmart(MutableMapping):
|
|||
self.dict[var][i] = flags[i]
|
||||
|
||||
def getVarFlags(self, var, expand = False, internalflags=False):
|
||||
var = var.replace(":", "_")
|
||||
local_var, _ = self._findVar(var)
|
||||
flags = {}
|
||||
|
||||
|
|
@ -875,6 +886,7 @@ class DataSmart(MutableMapping):
|
|||
|
||||
|
||||
def delVarFlags(self, var, **loginfo):
|
||||
var = var.replace(":", "_")
|
||||
self.expand_cache = {}
|
||||
if not var in self.dict:
|
||||
self._makeShadowCopy(var)
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ class DataNode(AstNode):
|
|||
def eval(self, data):
|
||||
groupd = self.groupd
|
||||
key = groupd["var"]
|
||||
key = key.replace(":", "_")
|
||||
loginfo = {
|
||||
'variable': key,
|
||||
'file': self.filename,
|
||||
|
|
@ -207,6 +208,7 @@ class ExportFuncsNode(AstNode):
|
|||
def eval(self, data):
|
||||
|
||||
for func in self.n:
|
||||
func = func.replace(":", "_")
|
||||
calledfunc = self.classname + "_" + func
|
||||
|
||||
if data.getVar(func, False) and not data.getVarFlag(func, 'export_func', False):
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from .ConfHandler import include, init
|
|||
# For compatibility
|
||||
bb.deprecate_import(__name__, "bb.parse", ["vars_from_file"])
|
||||
|
||||
__func_start_regexp__ = re.compile(r"(((?P<py>python(?=(\s|\()))|(?P<fr>fakeroot(?=\s)))\s*)*(?P<func>[\w\.\-\+\{\}\$]+)?\s*\(\s*\)\s*{$" )
|
||||
__func_start_regexp__ = re.compile(r"(((?P<py>python(?=(\s|\()))|(?P<fr>fakeroot(?=\s)))\s*)*(?P<func>[\w\.\-\+\{\}\$:]+)?\s*\(\s*\)\s*{$" )
|
||||
__inherit_regexp__ = re.compile(r"inherit\s+(.+)" )
|
||||
__export_func_regexp__ = re.compile(r"EXPORT_FUNCTIONS\s+(.+)" )
|
||||
__addtask_regexp__ = re.compile(r"addtask\s+(?P<func>\w+)\s*((before\s*(?P<before>((.*(?=after))|(.*))))|(after\s*(?P<after>((.*(?=before))|(.*)))))*")
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ from bb.parse import ParseError, resolve_file, ast, logger, handle
|
|||
__config_regexp__ = re.compile( r"""
|
||||
^
|
||||
(?P<exp>export\s+)?
|
||||
(?P<var>[a-zA-Z0-9\-_+.${}/~]+?)
|
||||
(?P<var>[a-zA-Z0-9\-_+.${}/~:]+?)
|
||||
(\[(?P<flag>[a-zA-Z0-9\-_+.]+)\])?
|
||||
|
||||
\s* (
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user