diff mbox series

oeqa httpserver.py: fallback for multiprocessing import without bitbake

Message ID 20251121105951.1158626-1-mikko.rapeli@linaro.org
State New
Headers show
Series oeqa httpserver.py: fallback for multiprocessing import without bitbake | expand

Commit Message

Mikko Rapeli Nov. 21, 2025, 10:59 a.m. UTC
When testexport.bbclass is used, then build environment and bitbake
may not be available when oeqa tests run.

Fixes oeqa test execution:

https://ledge.validation.linaro.org/scheduler/job/123974

ImportError: Failed to import test module: apt
Traceback (most recent call last):
  File "/usr/lib/python3.13/unittest/loader.py", line 396, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.13/unittest/loader.py", line 339, in _get_module_from_name
    __import__(name)
    ~~~~~~~~~~^^^^^^
  File "/lava-downloads/core-image-sato/meta/lib/oeqa/runtime/cases/apt.py", line 8, in <module>
    from oeqa.utils.httpserver import HTTPService
  File "/lava-downloads/core-image-sato/meta/lib/oeqa/utils/httpserver.py", line 9, in <module>
    from bb import multiprocessing
ModuleNotFoundError: No module named 'bb'

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
 meta/lib/oeqa/utils/httpserver.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Richard Purdie Nov. 21, 2025, 1:27 p.m. UTC | #1
On Fri, 2025-11-21 at 12:59 +0200, Mikko Rapeli via lists.openembedded.org wrote:
> When testexport.bbclass is used, then build environment and bitbake
> may not be available when oeqa tests run.
> 
> Fixes oeqa test execution:
> 
> https://ledge.validation.linaro.org/scheduler/job/123974
> 
> ImportError: Failed to import test module: apt
> Traceback (most recent call last):
>   File "/usr/lib/python3.13/unittest/loader.py", line 396, in _find_test_path
>     module = self._get_module_from_name(name)
>   File "/usr/lib/python3.13/unittest/loader.py", line 339, in _get_module_from_name
>     __import__(name)
>     ~~~~~~~~~~^^^^^^
>   File "/lava-downloads/core-image-sato/meta/lib/oeqa/runtime/cases/apt.py", line 8, in <module>
>     from oeqa.utils.httpserver import HTTPService
>   File "/lava-downloads/core-image-sato/meta/lib/oeqa/utils/httpserver.py", line 9, in <module>
>     from bb import multiprocessing
> ModuleNotFoundError: No module named 'bb'

Breaks with python 3.14.

Cheers,

Richard
Mikko Rapeli Nov. 21, 2025, 1:30 p.m. UTC | #2
Hi,

On Fri, Nov 21, 2025 at 01:27:56PM +0000, Richard Purdie wrote:
> On Fri, 2025-11-21 at 12:59 +0200, Mikko Rapeli via lists.openembedded.org wrote:
> > When testexport.bbclass is used, then build environment and bitbake
> > may not be available when oeqa tests run.
> > 
> > Fixes oeqa test execution:
> > 
> > https://ledge.validation.linaro.org/scheduler/job/123974
> > 
> > ImportError: Failed to import test module: apt
> > Traceback (most recent call last):
> > � File "/usr/lib/python3.13/unittest/loader.py", line 396, in _find_test_path
> > ��� module = self._get_module_from_name(name)
> > � File "/usr/lib/python3.13/unittest/loader.py", line 339, in _get_module_from_name
> > ��� __import__(name)
> > ��� ~~~~~~~~~~^^^^^^
> > � File "/lava-downloads/core-image-sato/meta/lib/oeqa/runtime/cases/apt.py", line 8, in <module>
> > ��� from oeqa.utils.httpserver import HTTPService
> > � File "/lava-downloads/core-image-sato/meta/lib/oeqa/utils/httpserver.py", line 9, in <module>
> > ��� from bb import multiprocessing
> > ModuleNotFoundError: No module named 'bb'
> 
> Breaks with python 3.14.

Understood but this would fix current test setups which still have python 3.13.

Cheers,

-Mikko
Richard Purdie Nov. 21, 2025, 1:34 p.m. UTC | #3
On Fri, 2025-11-21 at 15:30 +0200, Mikko Rapeli wrote:
> Hi,
> 
> On Fri, Nov 21, 2025 at 01:27:56PM +0000, Richard Purdie wrote:
> > On Fri, 2025-11-21 at 12:59 +0200, Mikko Rapeli via
> > lists.openembedded.org wrote:
> > > When testexport.bbclass is used, then build environment and
> > > bitbake
> > > may not be available when oeqa tests run.
> > > 
> > > Fixes oeqa test execution:
> > > 
> > > https://ledge.validation.linaro.org/scheduler/job/123974
> > > 
> > > ImportError: Failed to import test module: apt
> > > Traceback (most recent call last):
> > >   File "/usr/lib/python3.13/unittest/loader.py", line 396, in
> > > _find_test_path
> > >     module = self._get_module_from_name(name)
> > >   File "/usr/lib/python3.13/unittest/loader.py", line 339, in
> > > _get_module_from_name
> > >     __import__(name)
> > >     ~~~~~~~~~~^^^^^^
> > >   File "/lava-downloads/core-image-
> > > sato/meta/lib/oeqa/runtime/cases/apt.py", line 8, in <module>
> > >     from oeqa.utils.httpserver import HTTPService
> > >   File "/lava-downloads/core-image-
> > > sato/meta/lib/oeqa/utils/httpserver.py", line 9, in <module>
> > >     from bb import multiprocessing
> > > ModuleNotFoundError: No module named 'bb'
> > 
> > Breaks with python 3.14.
> 
> Understood but this would fix current test setups which still have
> python 3.13.

Where should we document that testexport only works if you have 3.13 or
lower and not with 3.14? Who is going to maintain these requirements?
This "not needing bb" requirement isn't really working well.

I'd rather require lib/bb be present and included in the exported test
data for example.

Cheers,

Richard
Mikko Rapeli Nov. 21, 2025, 1:39 p.m. UTC | #4
Hi,

On Fri, Nov 21, 2025 at 01:34:44PM +0000, Richard Purdie wrote:
> On Fri, 2025-11-21 at 15:30 +0200, Mikko Rapeli wrote:
> > Hi,
> > 
> > On Fri, Nov 21, 2025 at 01:27:56PM +0000, Richard Purdie wrote:
> > > On Fri, 2025-11-21 at 12:59 +0200, Mikko Rapeli via
> > > lists.openembedded.org wrote:
> > > > When testexport.bbclass is used, then build environment and
> > > > bitbake
> > > > may not be available when oeqa tests run.
> > > > 
> > > > Fixes oeqa test execution:
> > > > 
> > > > https://ledge.validation.linaro.org/scheduler/job/123974
> > > > 
> > > > ImportError: Failed to import test module: apt
> > > > Traceback (most recent call last):
> > > > � File "/usr/lib/python3.13/unittest/loader.py", line 396, in
> > > > _find_test_path
> > > > ��� module = self._get_module_from_name(name)
> > > > � File "/usr/lib/python3.13/unittest/loader.py", line 339, in
> > > > _get_module_from_name
> > > > ��� __import__(name)
> > > > ��� ~~~~~~~~~~^^^^^^
> > > > � File "/lava-downloads/core-image-
> > > > sato/meta/lib/oeqa/runtime/cases/apt.py", line 8, in <module>
> > > > ��� from oeqa.utils.httpserver import HTTPService
> > > > � File "/lava-downloads/core-image-
> > > > sato/meta/lib/oeqa/utils/httpserver.py", line 9, in <module>
> > > > ��� from bb import multiprocessing
> > > > ModuleNotFoundError: No module named 'bb'
> > > 
> > > Breaks with python 3.14.
> > 
> > Understood but this would fix current test setups which still have
> > python 3.13.
> 
> Where should we document that testexport only works if you have 3.13 or
> lower and not with 3.14? Who is going to maintain these requirements?
> This "not needing bb" requirement isn't really working well.
> 
> I'd rather require lib/bb be present and included in the exported test
> data for example.

I agree this is the long term fix. If you don't want a "quick fix to unblock
testing" then I need to look into that. I was hoping to keep changes to
master branch minimal until release done.

Cheers,

-Mikko
diff mbox series

Patch

diff --git a/meta/lib/oeqa/utils/httpserver.py b/meta/lib/oeqa/utils/httpserver.py
index 9e61cd89d5..cd42d3ed4c 100644
--- a/meta/lib/oeqa/utils/httpserver.py
+++ b/meta/lib/oeqa/utils/httpserver.py
@@ -6,7 +6,10 @@ 
 
 import http.server
 import logging
-from bb import multiprocessing
+try:
+    from bb import multiprocessing
+except ImportError:
+    import multiprocessing
 import os
 import signal
 from socketserver import ThreadingMixIn