oeqa/selftest: Fix failure when configuration contains BBLAYERS:append

When used with `--newbuilddir` option, it replaces relative paths in
BBLAYERS variable with absolute paths by evaluating the final value of
the variable, converting paths and saving result by assignment
(`BBLAYERS =`) at the end of bblayers.conf.

This breaks tests when bblayers.conf contains BBLAYERS:append because
:append statements are evaluated after all assignments and we end up
with the appended layer added twice - first by evaluating final value
of the variable, then again by bitbake evaluating BBLAYERS:append.

The error is as follows:
AssertionError: Command 'bitbake  -e' returned non-zero exit status 1:
ERROR: Found duplicated BBFILE_COLLECTIONS 'layer-name', check bblayers.conf or layer.conf to fix it.

(From OE-Core rev: 516c8e8f722ed0eb85a715a23b5e68d05abe9275)

Signed-off-by: Oleksandr Hnatiuk <ohnatiuk@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Oleksandr Hnatiuk
2024-12-09 12:29:41 -08:00
committed by Richard Purdie
parent 102743c4df
commit 7e3d21d0b2

View File

@@ -114,6 +114,7 @@ class OESelftestTestContext(OETestContext):
bblayers_abspath = [os.path.abspath(path) for path in bblayers.split()]
with open("%s/conf/bblayers.conf" % newbuilddir, "a") as f:
newbblayers = "# new bblayers to be used by selftest in the new build dir '%s'\n" % newbuilddir
newbblayers += 'unset BBLAYERS\n'
newbblayers += 'BBLAYERS = "%s"\n' % ' '.join(bblayers_abspath)
f.write(newbblayers)