From b26bcff4c4d72775f1def7e769015464953b955c Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Tue, 5 Jul 2016 00:53:59 +0300 Subject: bitbake-worker: don't reassign sys.stdout Worker needs input stream in binary mode as it reads binary content from it. Current code does it by detaching a buffer from sys.stdin and assigning it back to sys.stdin. Detached buffer is io.BufferedReader in binary mode. This operation is implicit as its purpose is not easily understandable from the code. Replacing it with fdopen(sys.stdin.fileno(), 'rb') should make the code more understandable. Assigning the buffer to sys.stdin is not needed as worker doesn't use sys.stdin. Moreover, it leads to difficult to debug issues down the stack. For example, devpyshell doesn't work without reopening sys.stdin in text mode. This is not needed anymore after this fix as sys.stdin is not changed in worker code and remains in text mode. Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- bin/bitbake-worker | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'bin') diff --git a/bin/bitbake-worker b/bin/bitbake-worker index 5d062a23e..963b4cdf9 100755 --- a/bin/bitbake-worker +++ b/bin/bitbake-worker @@ -436,8 +436,7 @@ class BitbakeWorker(object): self.build_pipes[pipe].read() try: - sys.stdin = sys.stdin.detach() - worker = BitbakeWorker(sys.stdin) + worker = BitbakeWorker(os.fdopen(sys.stdin.fileno(), 'rb')) if not profiling: worker.serve() else: -- cgit 1.2.3-korg