summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildProcess.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-15 12:09:21 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-15 12:09:21 -0800
commitdbe26095102cbdc6d5bef3509f05bc7b42c418cc (patch)
treefbdc5d18ff9fa33dc7b69fdb6c173312cb4507a8 /pym/_emerge/EbuildProcess.py
parent7c624515d0bb106c8a468addff5df153cebf31fc (diff)
downloadportage-dbe26095102cbdc6d5bef3509f05bc7b42c418cc.tar.gz
portage-dbe26095102cbdc6d5bef3509f05bc7b42c418cc.tar.bz2
portage-dbe26095102cbdc6d5bef3509f05bc7b42c418cc.zip
SpawnProcess: improve dummy pipe allocation logic
By using allocated file descriptors for keys in fd_pipes, we naturally avoid interference with callers such as FileDigester and MergeProcess. See the _setup_pipes docstring for more benefits of this allocation approach.
Diffstat (limited to 'pym/_emerge/EbuildProcess.py')
-rw-r--r--pym/_emerge/EbuildProcess.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/pym/_emerge/EbuildProcess.py b/pym/_emerge/EbuildProcess.py
index ce97aff0f..333ad7bd0 100644
--- a/pym/_emerge/EbuildProcess.py
+++ b/pym/_emerge/EbuildProcess.py
@@ -1,4 +1,4 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from _emerge.AbstractEbuildProcess import AbstractEbuildProcess
@@ -17,5 +17,11 @@ class EbuildProcess(AbstractEbuildProcess):
if actionmap is None:
actionmap = _spawn_actionmap(self.settings)
- return _doebuild_spawn(self.phase, self.settings,
- actionmap=actionmap, **kwargs)
+ if self._dummy_pipe_fd is not None:
+ self.settings["PORTAGE_PIPE_FD"] = str(self._dummy_pipe_fd)
+
+ try:
+ return _doebuild_spawn(self.phase, self.settings,
+ actionmap=actionmap, **kwargs)
+ finally:
+ self.settings.pop("PORTAGE_PIPE_FD", None)