ccc: Support running piped jobs (-pipe now works).

llvm-svn: 62396
This commit is contained in:
Daniel Dunbar 2009-01-17 02:02:35 +00:00
parent 1ab188f48a
commit 5f40dec258
2 changed files with 27 additions and 3 deletions

View File

@ -197,7 +197,29 @@ class Driver(object):
if res:
sys.exit(res)
elif isinstance(j, Jobs.PipedJob):
raise NotImplementedError,"Piped jobs aren't implemented yet."
import subprocess
procs = []
for sj in j.commands:
if self.cccEcho:
print ' '.join(map(repr,sj.getArgv()))
sys.stdout.flush()
if not procs:
stdin = None
else:
stdin = procs[-1].stdout
if sj is j.commands[-1]:
stdout = None
else:
stdout = subprocess.PIPE
procs.append(subprocess.Popen(sj.getArgv(),
executable=sj.executable,
stdin=stdin,
stdout=stdout))
for proc in procs:
res = proc.wait()
if res:
sys.exit(res)
else:
raise ValueError,'Encountered unknown job.'
@ -585,6 +607,8 @@ class Driver(object):
if hasPipe:
self.claim(hasPipe)
# FIXME: Hack, override -pipe till we support it.
if hasSaveTemps:
self.warning('-pipe ignored because -save-temps specified')
hasPipe = None
# Claim these here. Its not completely accurate but any warnings
# about these being unused are likely to be noise anyway.

View File

@ -141,7 +141,7 @@ class Darwin_AssembleTool(Tool):
cmd_args.extend(arglist.render(output))
if isinstance(input.source, Jobs.PipedJob):
cmd_args.append('-')
pass
else:
cmd_args.extend(arglist.renderAsInput(input.source))