diff options
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r-- | bitbake/lib/bb/parse/ast.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py index ea1096f2de..49a0788038 100644 --- a/bitbake/lib/bb/parse/ast.py +++ b/bitbake/lib/bb/parse/ast.py | |||
@@ -343,11 +343,12 @@ class InheritDeferredNode(AstNode): | |||
343 | bb.parse.BBHandler.inherit_defer(*self.inherit, data) | 343 | bb.parse.BBHandler.inherit_defer(*self.inherit, data) |
344 | 344 | ||
345 | class AddFragmentsNode(AstNode): | 345 | class AddFragmentsNode(AstNode): |
346 | def __init__(self, filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable): | 346 | def __init__(self, filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable, builtin_fragments_variable): |
347 | AstNode.__init__(self, filename, lineno) | 347 | AstNode.__init__(self, filename, lineno) |
348 | self.fragments_path_prefix = fragments_path_prefix | 348 | self.fragments_path_prefix = fragments_path_prefix |
349 | self.fragments_variable = fragments_variable | 349 | self.fragments_variable = fragments_variable |
350 | self.flagged_variables_list_variable = flagged_variables_list_variable | 350 | self.flagged_variables_list_variable = flagged_variables_list_variable |
351 | self.builtin_fragments_variable = builtin_fragments_variable | ||
351 | 352 | ||
352 | def eval(self, data): | 353 | def eval(self, data): |
353 | # No need to use mark_dependency since we would only match a fragment | 354 | # No need to use mark_dependency since we would only match a fragment |
@@ -360,13 +361,23 @@ class AddFragmentsNode(AstNode): | |||
360 | return candidate_fragment_path | 361 | return candidate_fragment_path |
361 | return None | 362 | return None |
362 | 363 | ||
364 | def check_and_set_builtin_fragment(fragment, data, builtin_fragments): | ||
365 | prefix, value = fragment.split('/', 1) | ||
366 | if prefix in builtin_fragments.keys(): | ||
367 | data.setVar(builtin_fragments[prefix], value) | ||
368 | return True | ||
369 | return False | ||
370 | |||
363 | fragments = data.getVar(self.fragments_variable) | 371 | fragments = data.getVar(self.fragments_variable) |
364 | layers = data.getVar('BBLAYERS') | 372 | layers = data.getVar('BBLAYERS') |
365 | flagged_variables = data.getVar(self.flagged_variables_list_variable).split() | 373 | flagged_variables = data.getVar(self.flagged_variables_list_variable).split() |
374 | builtin_fragments = {f[0]:f[1] for f in [f.split(':') for f in data.getVar(self.builtin_fragments_variable).split()] } | ||
366 | 375 | ||
367 | if not fragments: | 376 | if not fragments: |
368 | return | 377 | return |
369 | for f in fragments.split(): | 378 | for f in fragments.split(): |
379 | if check_and_set_builtin_fragment(f, data, builtin_fragments): | ||
380 | continue | ||
370 | layerid, fragment_name = f.split('/', 1) | 381 | layerid, fragment_name = f.split('/', 1) |
371 | full_fragment_name = data.expand("{}/{}.conf".format(self.fragments_path_prefix, fragment_name)) | 382 | full_fragment_name = data.expand("{}/{}.conf".format(self.fragments_path_prefix, fragment_name)) |
372 | fragment_path = find_fragment(layers, layerid, full_fragment_name) | 383 | fragment_path = find_fragment(layers, layerid, full_fragment_name) |
@@ -430,7 +441,8 @@ def handleAddFragments(statements, filename, lineno, m): | |||
430 | fragments_path_prefix = m.group(1) | 441 | fragments_path_prefix = m.group(1) |
431 | fragments_variable = m.group(2) | 442 | fragments_variable = m.group(2) |
432 | flagged_variables_list_variable = m.group(3) | 443 | flagged_variables_list_variable = m.group(3) |
433 | statements.append(AddFragmentsNode(filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable)) | 444 | builtin_fragments_variable = m.group(4) |
445 | statements.append(AddFragmentsNode(filename, lineno, fragments_path_prefix, fragments_variable, flagged_variables_list_variable, builtin_fragments_variable)) | ||
434 | 446 | ||
435 | def runAnonFuncs(d): | 447 | def runAnonFuncs(d): |
436 | code = [] | 448 | code = [] |