diff options
-rw-r--r-- | bitbake/lib/bb/parse/ast.py | 11 | ||||
-rw-r--r-- | bitbake/lib/bb/parse/parse_py/ConfHandler.py | 2 |
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 | ||
329 | class AddFragmentsNode(AstNode): | 329 | class 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): | |||
404 | def handleAddFragments(statements, filename, lineno, m): | 410 | def 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 | ||
409 | def runAnonFuncs(d): | 416 | def 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 | ||
52 | def init(data): | 52 | def init(data): |
53 | return | 53 | return |