| Message ID | 20260303165657.1803606-1-tgamblin@baylibre.com |
|---|---|
| State | New |
| Headers | show |
| Series | [bitbake-devel] runqueue.py: make sure we use bb multiprocessing | expand |
> -----Original Message----- > From: bitbake-devel@lists.openembedded.org <bitbake-devel@lists.openembedded.org> On Behalf Of Trevor Gamblin > Sent: den 3 mars 2026 17:57 > To: bitbake-devel@lists.openembedded.org > Subject: [bitbake-devel][PATCH] runqueue.py: make sure we use bb multiprocessing > > Otherwise, we see errors like: > > |ERROR: An uncaught exception occurred in runqueue > |Traceback (most recent call last): > | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1663, in execute_runqueue > | return self._execute_runqueue() > | ~~~~~~~~~~~~~~~~~~~~~~^^ > | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1607, in _execute_runqueue > | retval = self.dump_signatures(dumpsigs) > | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1718, in dump_signatures > | p.start() > | ~~~~~~~^^ > | File "/usr/lib64/python3.14/multiprocessing/process.py", line 121, in start > | self._popen = self._Popen(self) > | ~~~~~~~~~~~^^^^^^ > | File "/usr/lib64/python3.14/multiprocessing/context.py", line 224, in _Popen > | return _default_context.get_context().Process._Popen(process_obj) > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ > | File "/usr/lib64/python3.14/multiprocessing/context.py", line 300, in _Popen > | return Popen(process_obj) > | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__ > | super().__init__(process_obj) > | ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ > | File "/usr/lib64/python3.14/multiprocessing/popen_fork.py", line 20, in __init__ > | self._launch(process_obj) > | ~~~~~~~~~~~~^^^^^^^^^^^^^ > | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 47, in _launch > | reduction.dump(process_obj, buf) > | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ > | File "/usr/lib64/python3.14/multiprocessing/reduction.py", line 60, in dump > | ForkingPickler(file, protocol).dump(obj) > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ > |_pickle.PicklingError: Can't pickle local object <function CoreRecipeInfo.init_cacheData.<locals>.<lambda> at 0x7f7925667d70> > |when serializing tuple item 0 > |when serializing collections.defaultdict reconstructor arguments > |when serializing collections.defaultdict object > |when serializing dict item 'rundeps' > |when serializing bb.cache.CacheData state > |when serializing bb.cache.CacheData object > |when serializing dict item '' > |when serializing dict item 'recipecaches' > |when serializing bb.cooker.BBCooker state > |when serializing bb.cooker.BBCooker object > |when serializing dict item 'cooker' > |when serializing bb.runqueue.RunQueue state > |when serializing bb.runqueue.RunQueue object > |when serializing tuple item 0 > |when serializing method reconstructor arguments > |when serializing method object > |when serializing dict item '_target' > |when serializing multiprocessing.context.Process state > |when serializing multiprocessing.context.Process object > > Fixes: [YOCTO #16184] > > Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> > --- > lib/bb/runqueue.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py > index a880a0d54..27da5efaa 100644 > --- a/lib/bb/runqueue.py > +++ b/lib/bb/runqueue.py > @@ -21,13 +21,15 @@ import re > import bb > from bb import msg, event > from bb import monitordisk > +from bb import multiprocessing Is this really needed? You use bb.multiprocessing below, not multiprocessing. > import subprocess > import pickle > -from multiprocessing import Process > import shlex > import pprint > import time > > +Process = bb.multiprocessing.Process > + > bblogger = logging.getLogger("BitBake") > logger = logging.getLogger("BitBake.RunQueue") > hashequiv_logger = logging.getLogger("BitBake.RunQueue.HashEquiv") > -- > 2.53.0 //Peter
On 2026-03-03 16:49, Peter Kjellerstedt wrote: >> -----Original Message----- >> From: bitbake-devel@lists.openembedded.org <bitbake-devel@lists.openembedded.org> On Behalf Of Trevor Gamblin >> Sent: den 3 mars 2026 17:57 >> To: bitbake-devel@lists.openembedded.org >> Subject: [bitbake-devel][PATCH] runqueue.py: make sure we use bb multiprocessing >> >> Otherwise, we see errors like: >> >> |ERROR: An uncaught exception occurred in runqueue >> |Traceback (most recent call last): >> | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1663, in execute_runqueue >> | return self._execute_runqueue() >> | ~~~~~~~~~~~~~~~~~~~~~~^^ >> | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1607, in _execute_runqueue >> | retval = self.dump_signatures(dumpsigs) >> | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1718, in dump_signatures >> | p.start() >> | ~~~~~~~^^ >> | File "/usr/lib64/python3.14/multiprocessing/process.py", line 121, in start >> | self._popen = self._Popen(self) >> | ~~~~~~~~~~~^^^^^^ >> | File "/usr/lib64/python3.14/multiprocessing/context.py", line 224, in _Popen >> | return _default_context.get_context().Process._Popen(process_obj) >> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ >> | File "/usr/lib64/python3.14/multiprocessing/context.py", line 300, in _Popen >> | return Popen(process_obj) >> | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__ >> | super().__init__(process_obj) >> | ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ >> | File "/usr/lib64/python3.14/multiprocessing/popen_fork.py", line 20, in __init__ >> | self._launch(process_obj) >> | ~~~~~~~~~~~~^^^^^^^^^^^^^ >> | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 47, in _launch >> | reduction.dump(process_obj, buf) >> | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ >> | File "/usr/lib64/python3.14/multiprocessing/reduction.py", line 60, in dump >> | ForkingPickler(file, protocol).dump(obj) >> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ >> |_pickle.PicklingError: Can't pickle local object <function CoreRecipeInfo.init_cacheData.<locals>.<lambda> at 0x7f7925667d70> >> |when serializing tuple item 0 >> |when serializing collections.defaultdict reconstructor arguments >> |when serializing collections.defaultdict object >> |when serializing dict item 'rundeps' >> |when serializing bb.cache.CacheData state >> |when serializing bb.cache.CacheData object >> |when serializing dict item '' >> |when serializing dict item 'recipecaches' >> |when serializing bb.cooker.BBCooker state >> |when serializing bb.cooker.BBCooker object >> |when serializing dict item 'cooker' >> |when serializing bb.runqueue.RunQueue state >> |when serializing bb.runqueue.RunQueue object >> |when serializing tuple item 0 >> |when serializing method reconstructor arguments >> |when serializing method object >> |when serializing dict item '_target' >> |when serializing multiprocessing.context.Process state >> |when serializing multiprocessing.context.Process object >> >> Fixes: [YOCTO #16184] >> >> Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> >> --- >> lib/bb/runqueue.py | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py >> index a880a0d54..27da5efaa 100644 >> --- a/lib/bb/runqueue.py >> +++ b/lib/bb/runqueue.py >> @@ -21,13 +21,15 @@ import re >> import bb >> from bb import msg, event >> from bb import monitordisk >> +from bb import multiprocessing > Is this really needed? You use bb.multiprocessing below, > not multiprocessing. No, it isn't - looks like I committed extra. I'll send a v2. > >> import subprocess >> import pickle >> -from multiprocessing import Process >> import shlex >> import pprint >> import time >> >> +Process = bb.multiprocessing.Process >> + >> bblogger = logging.getLogger("BitBake") >> logger = logging.getLogger("BitBake.RunQueue") >> hashequiv_logger = logging.getLogger("BitBake.RunQueue.HashEquiv") >> -- >> 2.53.0 > //Peter >
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index a880a0d54..27da5efaa 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -21,13 +21,15 @@ import re import bb from bb import msg, event from bb import monitordisk +from bb import multiprocessing import subprocess import pickle -from multiprocessing import Process import shlex import pprint import time +Process = bb.multiprocessing.Process + bblogger = logging.getLogger("BitBake") logger = logging.getLogger("BitBake.RunQueue") hashequiv_logger = logging.getLogger("BitBake.RunQueue.HashEquiv")
Otherwise, we see errors like: |ERROR: An uncaught exception occurred in runqueue |Traceback (most recent call last): | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1663, in execute_runqueue | return self._execute_runqueue() | ~~~~~~~~~~~~~~~~~~~~~~^^ | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1607, in _execute_runqueue | retval = self.dump_signatures(dumpsigs) | File "/srv/pokybuild/yocto-worker/check-layer/build/layers/bitbake/lib/bb/runqueue.py", line 1718, in dump_signatures | p.start() | ~~~~~~~^^ | File "/usr/lib64/python3.14/multiprocessing/process.py", line 121, in start | self._popen = self._Popen(self) | ~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/multiprocessing/context.py", line 224, in _Popen | return _default_context.get_context().Process._Popen(process_obj) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/multiprocessing/context.py", line 300, in _Popen | return Popen(process_obj) | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__ | super().__init__(process_obj) | ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/multiprocessing/popen_fork.py", line 20, in __init__ | self._launch(process_obj) | ~~~~~~~~~~~~^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 47, in _launch | reduction.dump(process_obj, buf) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/multiprocessing/reduction.py", line 60, in dump | ForkingPickler(file, protocol).dump(obj) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ |_pickle.PicklingError: Can't pickle local object <function CoreRecipeInfo.init_cacheData.<locals>.<lambda> at 0x7f7925667d70> |when serializing tuple item 0 |when serializing collections.defaultdict reconstructor arguments |when serializing collections.defaultdict object |when serializing dict item 'rundeps' |when serializing bb.cache.CacheData state |when serializing bb.cache.CacheData object |when serializing dict item '' |when serializing dict item 'recipecaches' |when serializing bb.cooker.BBCooker state |when serializing bb.cooker.BBCooker object |when serializing dict item 'cooker' |when serializing bb.runqueue.RunQueue state |when serializing bb.runqueue.RunQueue object |when serializing tuple item 0 |when serializing method reconstructor arguments |when serializing method object |when serializing dict item '_target' |when serializing multiprocessing.context.Process state |when serializing multiprocessing.context.Process object Fixes: [YOCTO #16184] Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> --- lib/bb/runqueue.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)