commit:     3b518fe224c6b6006eeadf4fe929325ab5cc5c6a
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat May  1 23:01:24 2021 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat May  1 23:18:00 2021 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=3b518fe2

ebuild-ipc: silently handle KeyboardInterrupt

Bug: https://bugs.gentoo.org/787563
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 bin/ebuild-ipc.py | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index be4a320ce..32f6d53b9 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -1,16 +1,30 @@
 #!/usr/bin/python -b
-# Copyright 2010-2018 Gentoo Foundation
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 #
 # This is a helper which ebuild processes can use
 # to communicate with portage's main python process.
 
+# This block ensures that ^C interrupts are handled quietly.
+try:
+       import os
+       import signal
+
+       def exithandler(signum, _frame):
+               signal.signal(signum, signal.SIG_DFL)
+               os.kill(os.getpid(), signum)
+
+       signal.signal(signal.SIGINT, exithandler)
+       signal.signal(signal.SIGTERM, exithandler)
+       signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+
+except KeyboardInterrupt:
+       raise SystemExit(130)
+
 import errno
 import logging
-import os
 import pickle
 import platform
-import signal
 import sys
 import time
 

Reply via email to