]> code.ossystems Code Review - openembedded-core.git/commitdiff
process: fix handling of the input argument
authorChris Larson <chris_larson@mentor.com>
Thu, 30 Dec 2010 06:44:21 +0000 (23:44 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 4 Jan 2011 14:46:53 +0000 (14:46 +0000)
When using a logfile, we weren't sending input to the child process.

(Bitbake rev: 5ec4ca7e45bdf6d259503fc67155395e89ba6329)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/process.py

index dc97e3f72f797840b90b6a73dea9d02ba5dea734..0e19cbe8de4e3a2c0a5d36161faca8ecfd9f301f 100644 (file)
@@ -63,23 +63,26 @@ class Popen(subprocess.Popen):
         subprocess.Popen.__init__(self, *args, **options)
 
 def _logged_communicate(pipe, log, input):
+    if pipe.stdin:
+        if input is not None:
+            pipe.stdin.write(input)
+        pipe.stdin.close()
+
     bufsize = 512
-    hasoutput = pipe.stdout is not None or pipe.stderr is not None
-    if hasoutput:
-        outdata, errdata = [], []
-        while pipe.poll() is None:
-            if pipe.stdout is not None:
-                data = pipe.stdout.read(bufsize)
-                if data is not None:
-                    outdata.append(data)
-                    log.write(data)
-
-            if pipe.stderr is not None:
-                data = pipe.stderr.read(bufsize)
-                if data is not None:
-                    errdata.append(data)
-                    log.write(data)
-        return ''.join(outdata), ''.join(errdata)
+    outdata, errdata = [], []
+    while pipe.poll() is None:
+        if pipe.stdout is not None:
+            data = pipe.stdout.read(bufsize)
+            if data is not None:
+                outdata.append(data)
+                log.write(data)
+
+        if pipe.stderr is not None:
+            data = pipe.stderr.read(bufsize)
+            if data is not None:
+                errdata.append(data)
+                log.write(data)
+    return ''.join(outdata), ''.join(errdata)
 
 def run(cmd, input=None, **options):
     """Convenience function to run a command and return its output, raising an