From 61186bc98a556aa25ef5ed8e419c6a3e60dbfbe5 Mon Sep 17 00:00:00 2001 From: Yoann Congal Date: Tue, 10 Sep 2024 22:47:35 +0200 Subject: [PATCH] oeqa/selftest: Only rewrite envvars paths that absolutely point to builddir When building the new selftest builddir, paths in environment variables are rewritten to point to the new buildir, but users can have environment variables that point outside of the build dir using relative paths from builddir. We must not rewrite those. Check this by verifying that the absolute path still contains the builddir. Fixes [YOCTO #15241] (From OE-Core rev: c5e70500caffcd0518899cc6eba23a38bc3be108) Signed-off-by: Yoann Congal Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/context.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py index 99186175e5..acc3b073bd 100644 --- a/meta/lib/oeqa/selftest/context.py +++ b/meta/lib/oeqa/selftest/context.py @@ -117,8 +117,11 @@ class OESelftestTestContext(OETestContext): newbblayers += 'BBLAYERS = "%s"\n' % ' '.join(bblayers_abspath) f.write(newbblayers) + # Rewrite builddir paths seen in environment variables for e in os.environ: - if builddir + "/" in os.environ[e]: + # Rewrite paths that absolutely point inside builddir + # (e.g $builddir/conf/ would be rewritten but not $builddir/../bitbake/) + if builddir + "/" in os.environ[e] and builddir + "/" in os.path.abspath(os.environ[e]): os.environ[e] = os.environ[e].replace(builddir + "/", newbuilddir + "/") if os.environ[e].endswith(builddir): os.environ[e] = os.environ[e].replace(builddir, newbuilddir)