diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-09-23 18:08:03 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-09-23 18:08:03 +0000 |
commit | 417386003fa43fb02d49b2c09e5012bfb8114568 (patch) | |
tree | 3593733b7ce4b36ec8c0d976b215b518909373b1 | |
parent | 7c27bcd86c26d821952ea9c16189f95e376a71dc (diff) | |
download | portage-417386003fa43fb02d49b2c09e5012bfb8114568.tar.gz portage-417386003fa43fb02d49b2c09e5012bfb8114568.tar.bz2 portage-417386003fa43fb02d49b2c09e5012bfb8114568.zip |
In spawn(), initialize default fd_pipes before doing the stdout/stderr flush.
svn path=/main/trunk/; revision=7796
-rw-r--r-- | pym/portage/__init__.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 271e11669..d4411a7fc 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -2385,14 +2385,16 @@ def spawn(mystring, mysettings, debug=0, free=0, droppriv=0, sesandbox=0, fakero env=mysettings.environ() keywords["opt_name"]="[%s]" % mysettings["PF"] + fd_pipes = keywords.get("fd_pipes") + if fd_pipes is None: + fd_pipes = {0:0, 1:1, 2:2} # In some cases the above print statements don't flush stdout, so # it needs to be flushed before allowing a child process to use it # so that output always shows in the correct order. - fd_pipes = keywords.get("fd_pipes") - if fd_pipes: - if fd_pipes.get(1) == sys.stdout.fileno(): + for fd in fd_pipes.itervalues(): + if fd == sys.stdout.fileno(): sys.stdout.flush() - if fd_pipes.get(2) == sys.stderr.fileno(): + if fd == sys.stderr.fileno(): sys.stderr.flush() # The default policy for the sesandbox domain only allows entry (via exec) @@ -2408,10 +2410,7 @@ def spawn(mystring, mysettings, debug=0, free=0, droppriv=0, sesandbox=0, fakero got_pty = False if logfile: del keywords["logfile"] - fd_pipes = keywords.get("fd_pipes") - if fd_pipes is None: - fd_pipes = {0:0, 1:1, 2:2} - elif 1 not in fd_pipes or 2 not in fd_pipes: + if 1 not in fd_pipes or 2 not in fd_pipes: raise ValueError(fd_pipes) from pty import openpty try: |