This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch aevri/win32_minimal in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 6b3e1f65df0678185ff6f4afbf80f2858599637d Author: Angelos Evripiotis <[email protected]> AuthorDate: Fri Oct 4 18:12:12 2019 +0100 scheduler: no redundant signal code on win32 There's no point disconnecting or blocking signals that don't exist on e.g. win32. Some of these signal ids are undefined though, which causes an AttributeError, so we want to avoid that. --- src/buildstream/_scheduler/scheduler.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/buildstream/_scheduler/scheduler.py b/src/buildstream/_scheduler/scheduler.py index d0a1895..6385b61 100644 --- a/src/buildstream/_scheduler/scheduler.py +++ b/src/buildstream/_scheduler/scheduler.py @@ -245,7 +245,8 @@ class Scheduler(): # Block this until we're finished terminating jobs, # this will remain blocked forever. - signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGINT]) + if self.context.platform.does_support_signals(): + signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGINT]) # jobs_suspended() # @@ -482,14 +483,16 @@ class Scheduler(): # Connects our signal handler event callbacks to the mainloop # def _connect_signals(self): - self.loop.add_signal_handler(signal.SIGINT, self._interrupt_event) - self.loop.add_signal_handler(signal.SIGTERM, self._terminate_event) - self.loop.add_signal_handler(signal.SIGTSTP, self._suspend_event) + if self.context.platform.does_support_signals(): + self.loop.add_signal_handler(signal.SIGINT, self._interrupt_event) + self.loop.add_signal_handler(signal.SIGTERM, self._terminate_event) + self.loop.add_signal_handler(signal.SIGTSTP, self._suspend_event) def _disconnect_signals(self): - self.loop.remove_signal_handler(signal.SIGINT) - self.loop.remove_signal_handler(signal.SIGTSTP) - self.loop.remove_signal_handler(signal.SIGTERM) + if self.context.platform.does_support_signals(): + self.loop.remove_signal_handler(signal.SIGINT) + self.loop.remove_signal_handler(signal.SIGTSTP) + self.loop.remove_signal_handler(signal.SIGTERM) def _terminate_jobs_real(self): # 20 seconds is a long time, it can take a while and sometimes
