diff options
| author | Alexander Kanavin <alex.kanavin@gmail.com> | 2020-04-17 16:18:44 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-04-26 14:00:50 +0100 |
| commit | 4ae71d667d9ddd88180577c1ab64b2c96edfaeb3 (patch) | |
| tree | 1da9ab30c5309152a48e722ba24f23966f31e712 | |
| parent | 594c9392e924d5dd90b3a16e28ca5c56c6bcc7b5 (diff) | |
| download | poky-4ae71d667d9ddd88180577c1ab64b2c96edfaeb3.tar.gz | |
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>
| -rw-r--r-- | meta/classes/testimage.bbclass | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass index c1669f133d..53945478af 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass | |||
| @@ -204,7 +204,7 @@ def testimage_main(d): | |||
| 204 | """ | 204 | """ |
| 205 | Catch SIGTERM from worker in order to stop qemu. | 205 | Catch SIGTERM from worker in order to stop qemu. |
| 206 | """ | 206 | """ |
| 207 | raise RuntimeError | 207 | os.kill(os.getpid(), signal.SIGINT) |
| 208 | 208 | ||
| 209 | testimage_sanity(d) | 209 | testimage_sanity(d) |
| 210 | 210 | ||
| @@ -364,9 +364,9 @@ def testimage_main(d): | |||
| 364 | # or if the worker send us a SIGTERM | 364 | # or if the worker send us a SIGTERM |
| 365 | tc.target.start(params=d.getVar("TEST_QEMUPARAMS"), runqemuparams=d.getVar("TEST_RUNQEMUPARAMS")) | 365 | tc.target.start(params=d.getVar("TEST_QEMUPARAMS"), runqemuparams=d.getVar("TEST_RUNQEMUPARAMS")) |
| 366 | results = tc.runTests() | 366 | results = tc.runTests() |
| 367 | except (RuntimeError, BlockingIOError) as err: | 367 | except (KeyboardInterrupt, BlockingIOError) as err: |
| 368 | if isinstance(err, RuntimeError): | 368 | if isinstance(err, KeyboardInterrupt): |
| 369 | bb.error('testimage received SIGTERM, shutting down...') | 369 | bb.error('testimage interrupted, shutting down...') |
| 370 | else: | 370 | else: |
| 371 | bb.error('runqemu failed, shutting down...') | 371 | bb.error('runqemu failed, shutting down...') |
| 372 | if results: | 372 | if results: |
