diff options
author | Alexander Kanavin <alex.kanavin@gmail.com> | 2020-04-17 16:18:44 +0200 |
---|---|---|
committer | Steve Sakoman <steve@sakoman.com> | 2020-05-01 10:12:13 -1000 |
commit | 72a19f5f0f4bc4472d13b29e46a5c1673977e37a (patch) | |
tree | ae6a5d4c9ef7a152f8300d974219d6645edfc42c | |
parent | 3d633f20a98edff434086aa59e8157990bd62f25 (diff) | |
download | openembedded-core-contrib-72a19f5f0f4bc4472d13b29e46a5c1673977e37a.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).
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
-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 01d8598604..deb81bc256 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass @@ -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) @@ -360,9 +360,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: |