diff options
author | David James <davidjames@chromium.org> | 2013-07-19 14:03:45 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-07-22 12:17:44 -0700 |
commit | a249eef3be24aba2865de363937e0d6878319444 (patch) | |
tree | e3c9da55349ebf718c19fdc39eb7680cbe9088c9 /scripts/parallel_emerge.py | |
parent | 91d7da9033e9f056a98cdae94b27c07da4555c1b (diff) | |
download | chromite-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.py | 5 |
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. |