diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-02-19 22:59:57 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-02-19 22:59:57 +0000 |
commit | eeb44ce483f0cdf55b10936c20a20a0485a40398 (patch) | |
tree | 564c183d49dba403ec0aed77ca241b2b91ef4538 | |
parent | dd2116462ae311043986ae8b7fba27e68c1b2e66 (diff) |
ccc: Give nicer error when spawning a subprocess fails.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65075 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/ccc/ccclib/Driver.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/tools/ccc/ccclib/Driver.py b/tools/ccc/ccclib/Driver.py index 43e145b9db..fb69193be8 100644 --- a/tools/ccc/ccclib/Driver.py +++ b/tools/ccc/ccclib/Driver.py @@ -1,5 +1,6 @@ import os import platform +import subprocess import sys import tempfile from pprint import pprint @@ -224,11 +225,12 @@ class Driver(object): if vArg or self.cccEcho: print >>sys.stderr, ' '.join(map(str,j.getArgv())) sys.stderr.flush() - res = os.spawnvp(os.P_WAIT, j.executable, j.getArgv()) + p = self.startSubprocess(j.getArgv(), j.executable) + res = p.wait() if res: sys.exit(res) + elif isinstance(j, Jobs.PipedJob): - import subprocess procs = [] for sj in j.commands: if vArg or self.cccEcho: @@ -243,10 +245,11 @@ class Driver(object): stdout = None else: stdout = subprocess.PIPE - procs.append(subprocess.Popen(sj.getArgv(), - executable=sj.executable, - stdin=stdin, - stdout=stdout)) + + procs.append(self.startSubprocess(sj.getArgv(), sj.executable, + stdin=stdin, + stdout=stdout)) + for proc in procs: res = proc.wait() if res: @@ -254,6 +257,14 @@ class Driver(object): else: raise ValueError,'Encountered unknown job.' + def startSubprocess(self, argv, executable, **kwargs): + try: + return subprocess.Popen(argv, executable=executable, **kwargs) + except OSError, e: + self.warning("error trying to exec '%s': %s" % + (executable, e.args[1])) + sys.exit(1) + def claim(self, option): # FIXME: Move to OptionList once introduced and implement. pass |