summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/parse/ast.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r--bitbake/lib/bb/parse/ast.py11
1 files changed, 9 insertions, 2 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 = []