fix merge between onelab and princeton repositories
authorroot <root@cassidy.cs.princeton.edu>
Mon, 29 Nov 2010 17:41:56 +0000 (12:41 -0500)
committerroot <root@cassidy.cs.princeton.edu>
Mon, 29 Nov 2010 17:41:56 +0000 (12:41 -0500)
1  2 
sface/sfiprocess.py

diff --combined sface/sfiprocess.py
@@@ -5,7 -5,6 +5,7 @@@ import tim
  
  from PyQt4.QtCore import *
  from sface.config import config
 +from sface.xmlrpcwindow import XmlrpcTracker
  
  def find_executable(exec_name):
      """find the given executable in $PATH"""
@@@ -21,15 -20,12 +21,18 @@@ class SfiProcess(QObject)
      def __init__(self, parent=None):
          QObject.__init__(self, parent)
  
+         env = QProcess.systemEnvironment()
+         env << "PYTHONPATH=%s" % ":".join(sys.path)
          self.process = QProcess()
+         self.process.setEnvironment(env)
          self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"),
                       self.processFinished)
 +        
 +        self.xmlrpctracker = XmlrpcTracker()
 +        # in case self.output is read by the XmlrpcTracker before any
 +        # readyReadStandardOutput signal
 +        self.output = ''
 +
          self.connect(self.process, SIGNAL("readyReadStandardOutput()"),
                       self.processStandardOutput)
          self.connect(self.process, SIGNAL("readyReadStandardError()"),
@@@ -37,9 -33,6 +40,9 @@@
  
      def __init_command(self, args):
          self.args = QStringList()
 +        if config.debug:
 +            # this shows xmlrpc conversation, see sfi.py docs.
 +            self.args << QString('-D')
          for arg in args:
              self.args << QString(arg)
  
          return self.process.state() != QProcess.NotRunning
  
      def processStandardOutput(self):
-         # NOTE: The signal readyReadStandardOutput is emitted when
-         # the process has made new data available through its standard output channel.
-         # But the process is not necessarily finished.
-         # It's cool to have this method wo we print the stdOut live,
-         # but we must be carefull with self.output, used by XmlrpcTracker too.
-         tmpOut = self.process.readAllStandardOutput()
+         output = self.process.readAllStandardOutput()
          if config.debug:
-             print tmpOut        
-         self.output += tmpOut
+             print output
  
      def processStandardError(self):
          print self.process.readAllStandardError()
          if config.verbose:
              command = "%s %s" % (self.exe, self.args.join(" "))
              print time.strftime('%M:%S'),"[%.3f s]"%(time.time()-self._trace),command,'Done'
 +            self.xmlrpctracker.getAndPrint(self.output)
 +