summaryrefslogtreecommitdiff
path: root/scripts/parallel_emerge.py
diff options
context:
space:
mode:
authorDavid James <davidjames@chromium.org>2013-07-19 14:03:45 -0700
committerChromeBot <chrome-bot@google.com>2013-07-22 12:17:44 -0700
commita249eef3be24aba2865de363937e0d6878319444 (patch)
treee3c9da55349ebf718c19fdc39eb7680cbe9088c9 /scripts/parallel_emerge.py
parent91d7da9033e9f056a98cdae94b27c07da4555c1b (diff)
downloadchromite-a249eef3be24aba2865de363937e0d6878319444.tar.gz
Set close_fds=False in setup_fds.
I originally set close_fds=True here because I was looking to prevent locks from bleeding into subprocesses. close_fds=True closes all file descriptors except for the named file descriptors. This logic is no longer necessary in new versions of Portage because Portage has added its own logic for preventing bleeding locks. close_fds=True is also a maintenance headache and causes issues with new versions of Portage: ... File .../_emerge/PipeReader.py, line 42, in _start self._registered_events, output_handler)) File .../portage/util/_eventloop/EventLoop.py, line 512, in io_add_watch self._poll_obj.register(f, condition) File .../portage/util/_eventloop/EventLoop.py, line 633, in register self._epoll_obj.register(fd, *args) IOError: [Errno 22] Invalid argument In older versions of Portage, the close_fds argument was not available, so I've added a version check here. BUG=chromium:218085 TEST=Many mario-paladin trybot runs. Change-Id: I5ad83b4571eb6c00b15e2771a6287d4eb7ac79c5 Reviewed-on: https://gerrit.chromium.org/gerrit/62736 Commit-Queue: David James <davidjames@chromium.org> Reviewed-by: David James <davidjames@chromium.org> Tested-by: David James <davidjames@chromium.org>
Diffstat (limited to 'scripts/parallel_emerge.py')
-rw-r--r--scripts/parallel_emerge.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/scripts/parallel_emerge.py b/scripts/parallel_emerge.py
index ecd1f25e6..5e5833b00 100644
--- a/scripts/parallel_emerge.py
+++ b/scripts/parallel_emerge.py
@@ -882,7 +882,10 @@ def EmergeProcess(output, *args, **kwargs):
2: output.fileno(),
sys.stdin.fileno(): sys.stdin.fileno(),
output.fileno(): output.fileno()}
- portage.process._setup_pipes(fd_pipes)
+ if 0 <= vercmp(portage.VERSION, "2.1.11.50"):
+ portage.process._setup_pipes(fd_pipes, close_fds=False)
+ else:
+ portage.process._setup_pipes(fd_pipes)
# Portage doesn't like when sys.stdin.fileno() != 0, so point sys.stdin
# at the filehandle we just created in _setup_pipes.