[Uludag-commits] r10136 - trunk/pisi/pisi

svn-uludag at uludag.org.tr svn-uludag at uludag.org.tr
3 Kas 2006 Cum 11:20:45 EET


Author: faik
Date: Fri Nov  3 11:20:45 2006
New Revision: 10136

Modified:
   trunk/pisi/pisi/api.py
   trunk/pisi/pisi/comariface.py
   trunk/pisi/pisi/context.py
Log:
* YALI thread's don't like pisi's signal handling. Signal handling is
  now optional from pisi.api.init()

* Also a missed "import comar" fix and some code cleanups.



Modified: trunk/pisi/pisi/api.py
=================================================================
--- trunk/pisi/pisi/api.py	(original)
+++ trunk/pisi/pisi/api.py	Fri Nov  3 11:20:45 2006
@@ -52,7 +52,8 @@
 def init(database = True, write = True,
          options = None, ui = None, comar = True,
          stdout = None, stderr = None,
-         comar_sockname = None):
+         comar_sockname = None,
+         signal_handling = True):
     """Initialize PiSi subsystem"""
 
     # UI comes first
@@ -88,6 +89,9 @@
     import pisi.config
     ctx.config = pisi.config.Config(options)
 
+    if signal_handling:
+        ctx.sig = pisi.signalhandler.SignalHandler()
+
     # TODO: this is definitely not dynamic beyond this point!
     ctx.comar = comar and not ctx.config.get_option('ignore_comar')
     # This is for YALI, used in comariface.py:make_com()

Modified: trunk/pisi/pisi/comariface.py
=================================================================
--- trunk/pisi/pisi/comariface.py	(original)
+++ trunk/pisi/pisi/comariface.py	Fri Nov  3 11:20:45 2006
@@ -12,6 +12,7 @@
 
 import os
 import time
+import select
 
 import gettext
 __trans = gettext.translation('pisi', fallback=True)
@@ -20,18 +21,15 @@
 import pisi
 import pisi.context as ctx
 
-
 class Error(pisi.Error):
     pass
 
+try:
+    import comar
+except ImportError:
+    raise Error(_("comar package is not fully installed"))
 
 def make_com():
-    try:
-        import comar
-        # FIXME: maybe we should reload if it is already imported
-    except ImportError:
-        raise Error(_("comar package is not fully installed"))
-    
     sockname = "/var/run/comar.socket"
     # This is used by YALI
     if ctx.comar_sockname:
@@ -50,7 +48,7 @@
 
 def wait_comar():
     # FIXME: this function is redundant, use make_com in wait_for_result
-    import socket, time
+    import socket
     sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
     timeout = 5
     sockname = "/var/run/comar.socket"
@@ -70,6 +68,10 @@
     while 1:
         try:
             reply = com.read_cmd()
+        except select.error:
+            if ctx.keyboard_interrupt_pending():
+                return
+            raise
         except comar.LinkClosed:
             # Comar postInstall does a "service comar restart" which cuts
             # our precious communication link, so we waitsss

Modified: trunk/pisi/pisi/context.py
=================================================================
--- trunk/pisi/pisi/context.py	(original)
+++ trunk/pisi/pisi/context.py	Fri Nov  3 11:20:45 2006
@@ -18,7 +18,7 @@
 import pisi.signalhandler
 
 const = pisi.constants.Constants()
-sig = pisi.signalhandler.SignalHandler()
+sig = None
 
 config = None
 
@@ -80,13 +80,13 @@
         return proc(txn)
 
 def disable_keyboard_interrupts():
-    sig.disable_signal(signal.SIGINT)
+    sig and sig.disable_signal(signal.SIGINT)
 
 def enable_keyboard_interrupts():
-    sig.enable_signal(signal.SIGINT)
+    sig and sig.enable_signal(signal.SIGINT)
 
 def keyboard_interrupt_disabled():
-    return sig.signal_disabled(signal.SIGINT)
+    return sig and sig.signal_disabled(signal.SIGINT)
 
 def keyboard_interrupt_pending():
-    return sig.signal_pending(signal.SIGINT)
+    return sig and sig.signal_pending(signal.SIGINT)


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi