[oe-commits] [bitbake] branch master-next updated: cooker.py: Catch when stdout doesn't have a file descriptor

git at git.openembedded.org git at git.openembedded.org
Wed Aug 31 17:01:51 UTC 2016


rpurdie pushed a commit to branch master-next
in repository bitbake.

The following commit(s) were added to refs/heads/master-next by this push:
       new  f15fb7a   cooker.py: Catch when stdout doesn't have a file descriptor
f15fb7a is described below

commit f15fb7af83957ba75f00e18955211fe46a27ce1d
Author: Mariano Lopez <mariano.lopez at linux.intel.com>
AuthorDate: Tue Aug 23 07:06:11 2016 +0000

    cooker.py: Catch when stdout doesn't have a file descriptor
    
    Currently, there is a check to remove the TOSTOP attribute from
    a tty to avoid hangs. It assumes that sys.stdout will have a
    file descriptor and this is not always true, some IO classes
    will throw exceptions when trying to get its file descriptor.
    
    This will add a check for such cases and avoid throwing an
    exception.
    
    [YOCTO #10162]
    
    Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/cooker.py | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index d1ab4aa..b7d7a7e 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -30,7 +30,7 @@ import logging
 import multiprocessing
 import sre_constants
 import threading
-from io import StringIO
+from io import StringIO, UnsupportedOperation
 from contextlib import closing
 from functools import wraps
 from collections import defaultdict, namedtuple
@@ -230,14 +230,17 @@ class BBCooker:
             pass
 
         # TOSTOP must not be set or our children will hang when they output
-        fd = sys.stdout.fileno()
-        if os.isatty(fd):
-            import termios
-            tcattr = termios.tcgetattr(fd)
-            if tcattr[3] & termios.TOSTOP:
-                buildlog.info("The terminal had the TOSTOP bit set, clearing...")
-                tcattr[3] = tcattr[3] & ~termios.TOSTOP
-                termios.tcsetattr(fd, termios.TCSANOW, tcattr)
+        try:
+            fd = sys.stdout.fileno()
+            if os.isatty(fd):
+                import termios
+                tcattr = termios.tcgetattr(fd)
+                if tcattr[3] & termios.TOSTOP:
+                    buildlog.info("The terminal had the TOSTOP bit set, clearing...")
+                    tcattr[3] = tcattr[3] & ~termios.TOSTOP
+                    termios.tcsetattr(fd, termios.TCSANOW, tcattr)
+        except UnsupportedOperation:
+            pass
 
         self.command = bb.command.Command(self)
         self.state = state.initial

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list