commit: 8524792afc755906b50f276f6c3d22a00af21e0c Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Tue Sep 8 06:15:25 2015 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Tue Sep 8 14:11:48 2015 +0000 URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=8524792a
Move the signal handler into the StageBase class so it can handle unbind() cleanup Not quite complete, still errors on some unmounting bin/catalyst | 19 ------------------- catalyst/base/stagebase.py | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/bin/catalyst b/bin/catalyst index 19f5289..5560d41 100755 --- a/bin/catalyst +++ b/bin/catalyst @@ -12,25 +12,6 @@ from __future__ import print_function import sys -# This block ensures that ^C interrupts are handled quietly. -try: - import signal - - def exithandler(signum,frame): - signal.signal(signal.SIGINT, signal.SIG_IGN) - signal.signal(signal.SIGTERM, signal.SIG_IGN) - print() - sys.exit(1) - - signal.signal(signal.SIGINT, exithandler) - signal.signal(signal.SIGTERM, exithandler) - signal.signal(signal.SIGPIPE, signal.SIG_DFL) - -except KeyboardInterrupt: - print() - sys.exit(1) - - from catalyst.main import main from catalyst import __maintainer__ from catalyst import __version__ diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py index 17d88cd..077b663 100644 --- a/catalyst/base/stagebase.py +++ b/catalyst/base/stagebase.py @@ -4,6 +4,7 @@ import string import imp import types import shutil +import signal import sys from stat import ST_UID, ST_GID, ST_MODE @@ -200,6 +201,17 @@ class StageBase(TargetBase, ClearBase, GenBase): if "portage_confdir" in self.settings: file_locate(self.settings,["portage_confdir"],expand=0) + + # This block ensures that ^C interrupts are handled quietly. + try: + signal.signal(signal.SIGINT, self.exithandler) + signal.signal(signal.SIGTERM, self.exithandler) + signal.signal(signal.SIGPIPE, signal.SIG_DFL) + + except KeyboardInterrupt: + print() + sys.exit(1) + """ Setup our mount points """ # initialize our target mounts. self.target_mounts = TARGET_MOUNT_DEFAULTS.copy() @@ -276,6 +288,13 @@ class StageBase(TargetBase, ClearBase, GenBase): # save resources, it is not always needed self.compressor = None + def exithandler(self, signum,frame): + signal.signal(signal.SIGINT, signal.SIG_IGN) + signal.signal(signal.SIGTERM, signal.SIG_IGN) + self.unbind() + print() + sys.exit(1) + def override_cbuild(self): if "CBUILD" in self.makeconf: self.settings["CBUILD"]=self.makeconf["CBUILD"]