diff options
-rw-r--r-- | QMTest/TestSCons.py | 15 | ||||
-rw-r--r-- | runtest.py | 45 |
2 files changed, 39 insertions, 21 deletions
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index c5180d8..a35bf8d 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -100,12 +100,19 @@ def gccFortranLibs(): a more reliable way, but using popen3 is relatively efficient.""" libs = ['g2c'] + cmd = 'gcc -v' try: - import popen2 - stderr = popen2.popen3('gcc -v')[2] - except OSError: - return libs + import subprocess + except ImportError: + try: + import popen2 + stderr = popen2.popen3(cmd)[2] + except OSError: + return libs + else: + p = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE) + stderr = p.stderr for l in stderr.readlines(): list = string.split(l) @@ -89,7 +89,6 @@ import getopt import glob import os import os.path -import popen2 import re import stat import string @@ -345,25 +344,37 @@ class SystemExecutor(Base): sys.stdout.write("Unexpected exit status %d\n" % s) try: - popen2.Popen3 -except AttributeError: - class PopenExecutor(Base): - def execute(self): - (tochild, fromchild, childerr) = os.popen3(self.command_str) - tochild.close() - self.stderr = childerr.read() - self.stdout = fromchild.read() - fromchild.close() - self.status = childerr.close() - if not self.status: - self.status = 0 + import subprocess +except ImportError: + import popen2 + try: + popen2.Popen3 + except AttributeError: + class PopenExecutor(Base): + def execute(self): + (tochild, fromchild, childerr) = os.popen3(self.command_str) + tochild.close() + self.stderr = childerr.read() + self.stdout = fromchild.read() + fromchild.close() + self.status = childerr.close() + if not self.status: + self.status = 0 + else: + class PopenExecutor(Base): + def execute(self): + p = popen2.Popen3(self.command_str, 1) + p.tochild.close() + self.stdout = p.fromchild.read() + self.stderr = p.childerr.read() + self.status = p.wait() else: class PopenExecutor(Base): def execute(self): - p = popen2.Popen3(self.command_str, 1) - p.tochild.close() - self.stdout = p.fromchild.read() - self.stderr = p.childerr.read() + p = subprocess.Popen(self.command_str, shell=True) + p.stdin.close() + self.stdout = p.stdout.read() + self.stdout = p.stderr.read() self.status = p.wait() class Aegis(SystemExecutor): |