summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-03 14:42:41 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-03 14:42:41 -0800
commit400a2a983b374ec54e7b574789d1f94752581b81 (patch)
treeb63ef42124986c185a80bd829959051b2d7f3f8a
parent819c830ed7bf301e3fdf972c0a5519eb6c2a9ee6 (diff)
downloadportage-400a2a983b374ec54e7b574789d1f94752581b81.tar.gz
portage-400a2a983b374ec54e7b574789d1f94752581b81.tar.bz2
portage-400a2a983b374ec54e7b574789d1f94752581b81.zip
portdbapi: use global_event_loop when safe
-rw-r--r--pym/portage/dbapi/porttree.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py
index 35f4e2d09..ebb1be87a 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -34,6 +34,7 @@ from portage import _encodings
from portage import _unicode_encode
from portage import OrderedDict
from portage.util._eventloop.EventLoop import EventLoop
+from portage.util._eventloop.global_event_loop import global_event_loop
from _emerge.EbuildMetadataPhase import EbuildMetadataPhase
import os as _os
@@ -96,7 +97,6 @@ class portdbapi(dbapi):
# this purpose because doebuild makes many changes to the config
# instance that is passed in.
self.doebuild_settings = config(clone=self.settings)
- self._event_loop = EventLoop(main=False)
self.depcachedir = os.path.realpath(self.settings.depcachedir)
if os.environ.get("SANDBOX_ON") == "1":
@@ -195,6 +195,17 @@ class portdbapi(dbapi):
self._aux_cache = {}
self._broken_ebuilds = set()
+ @property
+ def _event_loop(self):
+ if portage._internal_warnings:
+ # For internal portage usage, the global_event_loop is safe.
+ return global_event_loop()
+ else:
+ # For external API consumers, use a local EventLoop, since
+ # we don't want to assume that it's safe to override the
+ # global SIGCHLD handler.
+ return EventLoop(main=False)
+
def _create_pregen_cache(self, tree):
conf = self.repositories.get_repo_for_location(tree)
cache = conf.get_pregenerated_cache(