summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorAlexander Kanavin <alex@linutronix.de>2024-12-11 14:46:14 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-12-13 10:44:35 +0000
commite0e6124d9adbd7a407b332535c1a3a6434cb157d (patch)
tree9e30c32a4b5bebefbdc015c8a885654810fb8dd1 /bitbake/lib
parent311348fc2ed1ddbcc4c3b8265be4dc9fc34a6947 (diff)
downloadpoky-e0e6124d9adbd7a407b332535c1a3a6434cb157d.tar.gz
bitbake: bitbake: parse: add support for flagged fragment variables
It was suggested that using flags in fragment content to mark fragment-specific metadata (such as descriptions and dependencies) is prone to quiet regressions when fragments are renamed or moved, and it clutters the fragment content. With this change allowed fragment metadata variables must be explicitly listed in a variable that is given to addfragment directive, and parser will add the flag containing the fragment name to them. (Bitbake rev: ed9a3ca9426500511feb77f41a146953dbfe9af7) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/parse/ast.py11
-rw-r--r--bitbake/lib/bb/parse/parse_py/ConfHandler.py2
2 files changed, 10 insertions, 3 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 7abefab2c2..03370180e3 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -327,10 +327,11 @@ class InheritDeferredNode(AstNode):
327 data.setVar('__BBDEFINHERITS', inherits) 327 data.setVar('__BBDEFINHERITS', inherits)
328 328
329class AddFragmentsNode(AstNode): 329class AddFragmentsNode(AstNode):
330 def __init__(self, filename, lineno, fragments_path_prefix, fragments_variable): 330 def __init__(self, filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable):
331 AstNode.__init__(self, filename, lineno) 331 AstNode.__init__(self, filename, lineno)
332 self.fragments_path_prefix = fragments_path_prefix 332 self.fragments_path_prefix = fragments_path_prefix
333 self.fragments_variable = fragments_variable 333 self.fragments_variable = fragments_variable
334 self.flagged_variables_list_variable = flagged_variables_list_variable
334 335
335 def eval(self, data): 336 def eval(self, data):
336 # No need to use mark_dependency since we would only match a fragment 337 # No need to use mark_dependency since we would only match a fragment
@@ -345,6 +346,7 @@ class AddFragmentsNode(AstNode):
345 346
346 fragments = data.getVar(self.fragments_variable) 347 fragments = data.getVar(self.fragments_variable)
347 layers = data.getVar('BBLAYERS') 348 layers = data.getVar('BBLAYERS')
349 flagged_variables = data.getVar(self.flagged_variables_list_variable).split()
348 350
349 if not fragments: 351 if not fragments:
350 return 352 return
@@ -354,6 +356,10 @@ class AddFragmentsNode(AstNode):
354 fragment_path = find_fragment(layers, layerid, full_fragment_name) 356 fragment_path = find_fragment(layers, layerid, full_fragment_name)
355 if fragment_path: 357 if fragment_path:
356 bb.parse.ConfHandler.include(self.filename, fragment_path, self.lineno, data, "include fragment") 358 bb.parse.ConfHandler.include(self.filename, fragment_path, self.lineno, data, "include fragment")
359 for flagged_var in flagged_variables:
360 val = data.getVar(flagged_var)
361 data.setVarFlag(flagged_var, f, val)
362 data.setVar(flagged_var, None)
357 else: 363 else:
358 bb.error("Could not find fragment {} in enabled layers: {}".format(f, layers)) 364 bb.error("Could not find fragment {} in enabled layers: {}".format(f, layers))
359 365
@@ -404,7 +410,8 @@ def handleInheritDeferred(statements, filename, lineno, m):
404def handleAddFragments(statements, filename, lineno, m): 410def handleAddFragments(statements, filename, lineno, m):
405 fragments_path_prefix = m.group(1) 411 fragments_path_prefix = m.group(1)
406 fragments_variable = m.group(2) 412 fragments_variable = m.group(2)
407 statements.append(AddFragmentsNode(filename, lineno, fragments_path_prefix, fragments_variable)) 413 flagged_variables_list_variable = m.group(3)
414 statements.append(AddFragmentsNode(filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable))
408 415
409def runAnonFuncs(d): 416def runAnonFuncs(d):
410 code = [] 417 code = []
diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index 35321dacfe..d0711eda04 100644
--- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -47,7 +47,7 @@ __export_regexp__ = re.compile( r"export\s+([a-zA-Z0-9\-_+.${}/~]+)$" )
47__unset_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/~]+)$" ) 47__unset_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/~]+)$" )
48__unset_flag_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/~]+)\[([a-zA-Z0-9\-_+.][a-zA-Z0-9\-_+.@]+)\]$" ) 48__unset_flag_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/~]+)\[([a-zA-Z0-9\-_+.][a-zA-Z0-9\-_+.@]+)\]$" )
49__addpylib_regexp__ = re.compile(r"addpylib\s+(.+)\s+(.+)" ) 49__addpylib_regexp__ = re.compile(r"addpylib\s+(.+)\s+(.+)" )
50__addfragments_regexp__ = re.compile(r"addfragments\s+(.+)\s+(.+)" ) 50__addfragments_regexp__ = re.compile(r"addfragments\s+(.+)\s+(.+)\s+(.+)" )
51 51
52def init(data): 52def init(data):
53 return 53 return