commit:     97d01ff55ca7450a78bdb62f2dcdb17a7d8acecb
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: Thu Mar  9 09:34:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=97d01ff5

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 | 27 +++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/bin/catalyst b/bin/catalyst
index 72a4cb4..a64cfce 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
 
 try:

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index b857a64..ef58454 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -2,6 +2,7 @@
 import os
 import imp
 import shutil
+import signal
 import sys
 
 from snakeoil import fileutils
@@ -206,6 +207,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()
@@ -268,6 +280,21 @@ class StageBase(TargetBase, ClearBase, GenBase):
                        self.env["PORT_LOGDIR"] = self.settings["port_logdir"]
                        self.env["PORT_LOGDIR_CLEAN"] = PORT_LOGDIR_CLEAN
 
+               # Initialize our (de)compressor's)
+               self.decompressor = 
CompressMap(self.settings["decompress_definitions"],
+                       env=self.env,
+                       search_order=self.settings["decompressor_search_order"])
+
+               # 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"]

Reply via email to