1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-10 04:00:28 +00:00

oeqa/selftest: Fix single threaded race issue

oe-selftest sets up separate build directories to run the tests in.
To to this, environment paths pointing at the previous build directory
are updated. In the multi-threaded case this is fine as the thread is
destroyed and the parent remains unchanged but in the single threaded
case, the environment is broken afterwards. This can mean we try and access
a directory which is in the process of being deleted (e.g. by clobberdir).

Restore the environment afterwards regardless to ensure the single threaded
case doesn't try and access the build directory which is now being deleted.

(From OE-Core rev: a165bec28ffc75fd44b1fdb02a0d3a80c5a4769b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2025-10-06 14:09:02 +01:00
parent 3c1ef0d520
commit 4ede48f660
+4
View File
@@ -44,9 +44,13 @@ class NonConcurrentTestSuite(unittest.TestSuite):
self.bb_vars = bb_vars
def run(self, result):
origenv = os.environ.copy()
(builddir, newbuilddir) = self.setupfunc("-st", None, self.suite)
ret = super().run(result)
# In forks we don't have to restore but in a single process, restore cwd and the env
os.chdir(builddir)
for e in origenv:
os.environ[e] = origenv[e]
if newbuilddir and ret.wasSuccessful() and self.removefunc:
self.removefunc(newbuilddir)