summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/elog/__init__.py30
1 files changed, 13 insertions, 17 deletions
diff --git a/pym/portage/elog/__init__.py b/pym/portage/elog/__init__.py
index d3e333534..5aa6930c7 100644
--- a/pym/portage/elog/__init__.py
+++ b/pym/portage/elog/__init__.py
@@ -43,11 +43,21 @@ def _combine_logentries(logentries):
return "".join(rValue)
_elog_mod_imports = {}
+def _load_mod(name):
+ global _elog_mod_imports
+ m = _elog_mod_imports.get(name)
+ if m is None:
+ m = __import__(name)
+ for comp in name.split(".")[1:]:
+ m = getattr(m, comp)
+ _elog_mod_imports[name] = m
+ return m
+
_elog_atexit_handlers = []
_preserve_logentries = {}
def elog_process(cpv, mysettings, phasefilter=None):
- global _elog_mod_imports
+
logsystems = mysettings.get("PORTAGE_ELOG_SYSTEM","").split()
for s in logsystems:
# allow per module overrides of PORTAGE_ELOG_CLASSES
@@ -57,13 +67,7 @@ def elog_process(cpv, mysettings, phasefilter=None):
# - is nicer than _ for module names, so allow people to use it.
s = s.replace("-", "_")
try:
- name = "portage.elog.mod_" + s
- m = _elog_mod_imports.get(name)
- if m is None:
- m = __import__(name)
- for comp in name.split(".")[1:]:
- m = getattr(m, comp)
- _elog_mod_imports[name] = m
+ _load_mod("portage.elog.mod_" + s)
except ImportError:
pass
@@ -113,15 +117,7 @@ def elog_process(cpv, mysettings, phasefilter=None):
# - is nicer than _ for module names, so allow people to use it.
s = s.replace("-", "_")
try:
- # FIXME: ugly ad.hoc import code
- # TODO: implement a common portage module loader
- name = "portage.elog.mod_" + s
- m = _elog_mod_imports.get(name)
- if m is None:
- m = __import__(name)
- for comp in name.split(".")[1:]:
- m = getattr(m, comp)
- _elog_mod_imports[name] = m
+ m = _load_mod("portage.elog.mod_" + s)
def timeout_handler(signum, frame):
raise PortageException("Timeout in elog_process for system '%s'" % s)
import signal