diff options
author | Alexander Bersenev <bay@hackerdom.ru> | 2014-02-17 17:55:51 +0600 |
---|---|---|
committer | Alexander Bersenev <bay@hackerdom.ru> | 2014-02-17 17:55:51 +0600 |
commit | 5a3f506c9ef1cfd78940b0509f10ef94b4434e29 (patch) | |
tree | 147c35a17a8bcd8ff467bb3063adab623da51fac /portage_with_autodep/bin/ebuild-ipc.py | |
parent | fixed a deadlock (diff) | |
download | autodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.tar.gz autodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.tar.bz2 autodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.zip |
updated portage to 2.2.8-r1
Diffstat (limited to 'portage_with_autodep/bin/ebuild-ipc.py')
-rwxr-xr-x | portage_with_autodep/bin/ebuild-ipc.py | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/portage_with_autodep/bin/ebuild-ipc.py b/portage_with_autodep/bin/ebuild-ipc.py index 68ad985..29d4c23 100755 --- a/portage_with_autodep/bin/ebuild-ipc.py +++ b/portage_with_autodep/bin/ebuild-ipc.py @@ -13,6 +13,7 @@ import select import signal import sys import time +import traceback def debug_signal(signum, frame): import pdb @@ -228,14 +229,22 @@ class EbuildIpc(object): pid = os.fork() if pid == 0: - os.close(pr) - - # File streams are in unbuffered mode since we do atomic - # read and write of whole pickles. - output_file = open(self.ipc_in_fifo, 'wb', 0) - output_file.write(pickle.dumps(args)) - output_file.close() - os._exit(os.EX_OK) + retval = 2 + try: + os.close(pr) + + # File streams are in unbuffered mode since we do atomic + # read and write of whole pickles. + output_file = open(self.ipc_in_fifo, 'wb', 0) + output_file.write(pickle.dumps(args)) + output_file.close() + retval = os.EX_OK + except SystemExit: + raise + except: + traceback.print_exc() + finally: + os._exit(retval) os.close(pw) @@ -258,9 +267,16 @@ class EbuildIpc(object): pid = os.fork() if pid == 0: - os.close(pr) - retval = self._receive_reply(input_fd) - os._exit(retval) + retval = 2 + try: + os.close(pr) + retval = self._receive_reply(input_fd) + except SystemExit: + raise + except: + traceback.print_exc() + finally: + os._exit(retval) os.close(pw) retval = self._wait(pid, pr, portage.localization._('during read')) |