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 |
