mirror of
https://git.yoctoproject.org/poky
synced 2026-04-19 06:32:13 +02:00
testimage.bbclass: correctly process SIGTERM
Python's unittest will not propagate exceptions upside of itself, but rather will just catch and print them. The working way to make it stop is to send a SIGINT (e.g. simulate a ctrl-c press), which will make it exit with a KeyboardInterrupt exception. This also makes pressing ctrl-c twice from bitbake work again (previously hanging instances of bitbake and qemu were left around, and bitbake would no longer start until they were killed manually). (From OE-Core rev: 06568a06ca22ee279d1829d26d4c38738233c06a) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
594c9392e9
commit
4ae71d667d
@@ -204,7 +204,7 @@ def testimage_main(d):
|
||||
"""
|
||||
Catch SIGTERM from worker in order to stop qemu.
|
||||
"""
|
||||
raise RuntimeError
|
||||
os.kill(os.getpid(), signal.SIGINT)
|
||||
|
||||
testimage_sanity(d)
|
||||
|
||||
@@ -364,9 +364,9 @@ def testimage_main(d):
|
||||
# or if the worker send us a SIGTERM
|
||||
tc.target.start(params=d.getVar("TEST_QEMUPARAMS"), runqemuparams=d.getVar("TEST_RUNQEMUPARAMS"))
|
||||
results = tc.runTests()
|
||||
except (RuntimeError, BlockingIOError) as err:
|
||||
if isinstance(err, RuntimeError):
|
||||
bb.error('testimage received SIGTERM, shutting down...')
|
||||
except (KeyboardInterrupt, BlockingIOError) as err:
|
||||
if isinstance(err, KeyboardInterrupt):
|
||||
bb.error('testimage interrupted, shutting down...')
|
||||
else:
|
||||
bb.error('runqemu failed, shutting down...')
|
||||
if results:
|
||||
|
||||
Reference in New Issue
Block a user