summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-12-15 14:04:28 -0800
committerZac Medico <zmedico@gentoo.org>2012-12-15 14:04:28 -0800
commit0db4c2a0f8b80b3f08a9a1f068a8cd0b2ff1fe4f (patch)
treec204d69eae88d5977ed70fdf32df3ee00b19680b /pym/_emerge
parente91e0dac2fbcec4ebb42af29e2914a120341eefa (diff)
downloadportage-0db4c2a0f8b80b3f08a9a1f068a8cd0b2ff1fe4f.tar.gz
portage-0db4c2a0f8b80b3f08a9a1f068a8cd0b2ff1fe4f.tar.bz2
portage-0db4c2a0f8b80b3f08a9a1f068a8cd0b2ff1fe4f.zip
Handle closed sys.__stdin__, for multiprocessing
Buggy code in python's multiprocessing/process.py closes sys.stdin and reassigns it to open(os.devnull), but fails to update the corresponding __stdin__ reference. So, detect that case and handle it appropriately. The buggy code is visible in http://hg.python.org/lookup/r73708.
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/BinpkgFetcher.py2
-rw-r--r--pym/_emerge/SpawnProcess.py2
2 files changed, 2 insertions, 2 deletions
diff --git a/pym/_emerge/BinpkgFetcher.py b/pym/_emerge/BinpkgFetcher.py
index 1913b4431..14f2552cb 100644
--- a/pym/_emerge/BinpkgFetcher.py
+++ b/pym/_emerge/BinpkgFetcher.py
@@ -91,7 +91,7 @@ class BinpkgFetcher(SpawnProcess):
# Redirect all output to stdout since some fetchers like
# wget pollute stderr (if portage detects a problem then it
# can send it's own message to stderr).
- fd_pipes.setdefault(0, sys.__stdin__.fileno())
+ fd_pipes.setdefault(0, portage._get_stdin().fileno())
fd_pipes.setdefault(1, sys.__stdout__.fileno())
fd_pipes.setdefault(2, sys.__stdout__.fileno())
diff --git a/pym/_emerge/SpawnProcess.py b/pym/_emerge/SpawnProcess.py
index d18512b34..45d709517 100644
--- a/pym/_emerge/SpawnProcess.py
+++ b/pym/_emerge/SpawnProcess.py
@@ -50,7 +50,7 @@ class SpawnProcess(SubProcess):
null_input = os.open('/dev/null', os.O_RDWR)
fd_pipes[0] = null_input
- fd_pipes.setdefault(0, sys.__stdin__.fileno())
+ fd_pipes.setdefault(0, portage._get_stdin().fileno())
fd_pipes.setdefault(1, sys.__stdout__.fileno())
fd_pipes.setdefault(2, sys.__stderr__.fileno())