summaryrefslogtreecommitdiffstats
path: root/lib/bb/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/utils.py')
-rw-r--r--lib/bb/utils.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index b62985dd7..91faa494c 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -35,6 +35,8 @@ import errno
import signal
from commands import getstatusoutput
from contextlib import contextmanager
+from ctypes import cdll
+
logger = logging.getLogger("BitBake.Util")
@@ -1291,3 +1293,20 @@ def get_file_layer(filename, d):
result = path_to_layer(filename)
return result
+
+
+# Constant taken from http://linux.die.net/include/linux/prctl.h
+PR_SET_PDEATHSIG = 1
+
+class PrCtlError(Exception):
+ pass
+
+def signal_on_parent_exit(signame):
+ """
+ Trigger signame to be sent when the parent process dies
+ """
+ signum = getattr(signal, signame)
+ # http://linux.die.net/man/2/prctl
+ result = cdll['libc.so.6'].prctl(PR_SET_PDEATHSIG, signum)
+ if result != 0:
+ raise PrCtlError('prctl failed with error code %s' % result)