From: Daniel Dunbar Date: Sat, 17 Jan 2009 02:02:35 +0000 (+0000) Subject: ccc: Support running piped jobs (-pipe now works). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d791fd22efd3649f23616ba00b9e98076c27ad4;p=clang ccc: Support running piped jobs (-pipe now works). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62396 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/ccc/ccclib/Driver.py b/tools/ccc/ccclib/Driver.py index 0f5b226237..e1cdd2d2f7 100644 --- a/tools/ccc/ccclib/Driver.py +++ b/tools/ccc/ccclib/Driver.py @@ -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,7 +607,9 @@ class Driver(object): if hasPipe: self.claim(hasPipe) # FIXME: Hack, override -pipe till we support it. - hasPipe = None + 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. if hasSaveTemps: diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py index 8b4efd4a3e..667ff7a286 100644 --- a/tools/ccc/ccclib/Tools.py +++ b/tools/ccc/ccclib/Tools.py @@ -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))