bitbake: bitbake-setup: replace {THISDIR} token with a keyword: bb-layers-relative

{THISDIR} is a special value token that can be used in the list of enabled
layers to specify the layer location relative to the confguration file:
https://git.openembedded.org/bitbake/commit/?id=b3153be29de8b8570b0c184369bd41f4c646cf92

This replaces the token with an explicit separate keyword for such layers:
so that special processing to determine the final value can be avoided, and
the feature can be formalized in the json schema:

instead of
   "bb-layers": [
        "{THISDIR}/meta-my-project"
    ]

this allows
   "bb-layers-relative": [
        "meta-my-project"

Going forward I think we should strive to avoid any further special value tokens.

(Bitbake rev: 90da82bd2bfcfd5590c9ae06015737b616074b56)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin
2025-11-06 18:08:04 +01:00
committed by Richard Purdie
parent 9780ec24d0
commit 516039e609
2 changed files with 26 additions and 22 deletions

View File

@@ -148,9 +148,10 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
"oe-fragments": ["test-fragment-2"]
},
{
"name": "gizmo-notemplate-with-thisdir",
"description": "Gizmo notemplate configuration using THISDIR",
"bb-layers": ["layerC","layerD/meta-layer","{THISDIR}/layerE/meta-layer"],
"name": "gizmo-notemplate-with-relative-layers",
"description": "Gizmo notemplate configuration using relative layers",
"bb-layers": ["layerC","layerD/meta-layer"],
"bb-layers-relative": ["layerE/meta-layer"],
"oe-fragments": ["test-fragment-2"]
}
]
@@ -204,14 +205,13 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
with open(os.path.join(bb_conf_path, 'bblayers.conf')) as f:
bblayers = f.read()
for l in bitbake_config["bb-layers"]:
if l.startswith('{THISDIR}/'):
thisdir_layer = os.path.join(
self.assertIn(os.path.join(setuppath, "layers", l), bblayers)
for l in bitbake_config.get("bb-layers-relative") or []:
relative_layer = os.path.join(
os.path.dirname(config_upstream["path"]),
l.removeprefix("{THISDIR}/"),
l,
)
self.assertIn(thisdir_layer, bblayers)
else:
self.assertIn(os.path.join(setuppath, "layers", l), bblayers)
self.assertIn(relative_layer, bblayers)
if 'oe-fragment' in bitbake_config.keys():
for f in bitbake_config["oe-fragments"]:
@@ -298,7 +298,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
'gizmo-env-passthrough',
'gizmo-no-fragment',
'gadget-notemplate','gizmo-notemplate',
'gizmo-notemplate-with-thisdir')}
'gizmo-notemplate-with-relative-layers')}
}
for cf, v in test_configurations.items():
for c in v['buildconfigs']: