Exemple #1
0
def get_socks5_proxy(settings):
    """
	Get UNIX socket path for a SOCKSv5 proxy. A new proxy is started if
	one isn't running yet, and an atexit event is added to stop the proxy
	on exit.

	@param settings: Portage settings instance (used to determine paths)
	@type settings: portage.config
	@return: (string) UNIX socket path
	"""

    if not proxy.is_running():
        proxy.start(settings)
        atexit_register(proxy.stop)

    return proxy.socket_path
Exemple #2
0
def get_socks5_proxy(settings):
    """
	Get UNIX socket path for a SOCKSv5 proxy. A new proxy is started if
	one isn't running yet, and an atexit event is added to stop the proxy
	on exit.

	@param settings: Portage settings instance (used to determine paths)
	@type settings: portage.config
	@return: (string) UNIX socket path
	"""

    if not proxy.is_running():
        proxy.start(settings)
        atexit_register(proxy.stop)

    return proxy.socket_path
Exemple #3
0
def elog_process(cpv, mysettings, phasefilter=None):
    global _elog_atexit_handlers

    logsystems = mysettings.get("PORTAGE_ELOG_SYSTEM", "").split()
    for s in logsystems:
        # allow per module overrides of PORTAGE_ELOG_CLASSES
        if ":" in s:
            s, levels = s.split(":", 1)
            levels = levels.split(",")
        # - is nicer than _ for module names, so allow people to use it.
        s = s.replace("-", "_")
        try:
            _load_mod("portage.elog.mod_" + s)
        except ImportError:
            pass

    if "T" in mysettings:
        ebuild_logentries = collect_ebuild_messages(
            os.path.join(mysettings["T"], "logging"))
    else:
        # A build dir isn't necessarily required since the messages.e*
        # functions allow messages to be generated in-memory.
        ebuild_logentries = {}
    all_logentries = collect_messages(key=cpv, phasefilter=phasefilter)
    if cpv in all_logentries:
        # Messages generated by the python elog implementation are assumed
        # to come first. For example, this ensures correct order for einfo
        # messages that are generated prior to the setup phase.
        all_logentries[cpv] = \
         _merge_logentries(all_logentries[cpv], ebuild_logentries)
    else:
        all_logentries[cpv] = ebuild_logentries

    my_elog_classes = set(mysettings.get("PORTAGE_ELOG_CLASSES", "").split())
    logsystems = {}
    for token in mysettings.get("PORTAGE_ELOG_SYSTEM", "").split():
        if ":" in token:
            s, levels = token.split(":", 1)
            levels = levels.split(",")
        else:
            s = token
            levels = ()
        levels_set = logsystems.get(s)
        if levels_set is None:
            levels_set = set()
            logsystems[s] = levels_set
        levels_set.update(levels)

    for key in all_logentries:
        default_logentries = filter_loglevels(all_logentries[key],
                                              my_elog_classes)

        # in case the filters matched all messages and no module overrides exist
        if len(default_logentries) == 0 and (not ":" in mysettings.get(
                "PORTAGE_ELOG_SYSTEM", "")):
            continue

        default_fulllog = _combine_logentries(default_logentries)

        # call listeners
        for listener in _elog_listeners:
            listener(mysettings, str(key), default_logentries, default_fulllog)

        # pass the processing to the individual modules
        for s, levels in logsystems.items():
            # allow per module overrides of PORTAGE_ELOG_CLASSES
            if levels:
                mod_logentries = filter_loglevels(all_logentries[key], levels)
                mod_fulllog = _combine_logentries(mod_logentries)
            else:
                mod_logentries = default_logentries
                mod_fulllog = default_fulllog
            if len(mod_logentries) == 0:
                continue
            # - is nicer than _ for module names, so allow people to use it.
            s = s.replace("-", "_")
            try:
                m = _load_mod("portage.elog.mod_" + s)
                # Timeout after one minute (in case something like the mail
                # module gets hung).
                try:
                    AlarmSignal.register(60)
                    m.process(mysettings, str(key), mod_logentries,
                              mod_fulllog)
                finally:
                    AlarmSignal.unregister()
                if hasattr(m, "finalize"
                           ) and not m.finalize in _elog_atexit_handlers:
                    _elog_atexit_handlers.append(m.finalize)
                    atexit_register(m.finalize)
            except (ImportError, AttributeError) as e:
                writemsg(
                    _("!!! Error while importing logging modules "
                      "while loading \"mod_%s\":\n") % str(s))
                writemsg("%s\n" % str(e), noiselevel=-1)
            except AlarmSignal:
                writemsg("Timeout in elog_process for system '%s'\n" % s,
                         noiselevel=-1)
            except PortageException as e:
                writemsg("%s\n" % str(e), noiselevel=-1)
def elog_process(cpv, mysettings, phasefilter=None):
	global _elog_atexit_handlers
	
	logsystems = mysettings.get("PORTAGE_ELOG_SYSTEM","").split()
	for s in logsystems:
		# allow per module overrides of PORTAGE_ELOG_CLASSES
		if ":" in s:
			s, levels = s.split(":", 1)
			levels = levels.split(",")
		# - is nicer than _ for module names, so allow people to use it.
		s = s.replace("-", "_")
		try:
			_load_mod("portage.elog.mod_" + s)
		except ImportError:
			pass

	if "T" in mysettings:
		ebuild_logentries = collect_ebuild_messages(
			os.path.join(mysettings["T"], "logging"))
	else:
		# A build dir isn't necessarily required since the messages.e*
		# functions allow messages to be generated in-memory.
		ebuild_logentries = {}
	all_logentries = collect_messages(key=cpv, phasefilter=phasefilter)
	if cpv in all_logentries:
		# Messages generated by the python elog implementation are assumed
		# to come first. For example, this ensures correct order for einfo
		# messages that are generated prior to the setup phase.
		all_logentries[cpv] = \
			_merge_logentries(all_logentries[cpv], ebuild_logentries)
	else:
		all_logentries[cpv] = ebuild_logentries

	my_elog_classes = set(mysettings.get("PORTAGE_ELOG_CLASSES", "").split())
	logsystems = {}
	for token in mysettings.get("PORTAGE_ELOG_SYSTEM", "").split():
		if ":" in token:
			s, levels = token.split(":", 1)
			levels = levels.split(",")
		else:
			s = token
			levels = ()
		levels_set = logsystems.get(s)
		if levels_set is None:
			levels_set = set()
			logsystems[s] = levels_set
		levels_set.update(levels)

	for key in all_logentries:
		default_logentries = filter_loglevels(all_logentries[key], my_elog_classes)

		# in case the filters matched all messages and no module overrides exist
		if len(default_logentries) == 0 and (not ":" in mysettings.get("PORTAGE_ELOG_SYSTEM", "")):
			continue

		default_fulllog = _combine_logentries(default_logentries)

		# call listeners
		for listener in _elog_listeners:
			listener(mysettings, str(key), default_logentries, default_fulllog)

		# pass the processing to the individual modules
		for s, levels in logsystems.items():
			# allow per module overrides of PORTAGE_ELOG_CLASSES
			if levels:
				mod_logentries = filter_loglevels(all_logentries[key], levels)
				mod_fulllog = _combine_logentries(mod_logentries)
			else:
				mod_logentries = default_logentries
				mod_fulllog = default_fulllog
			if len(mod_logentries) == 0:
				continue
			# - is nicer than _ for module names, so allow people to use it.
			s = s.replace("-", "_")
			try:
				m = _load_mod("portage.elog.mod_" + s)
				# Timeout after one minute (in case something like the mail
				# module gets hung).
				try:
					AlarmSignal.register(60)
					m.process(mysettings, str(key), mod_logentries, mod_fulllog)
				finally:
					AlarmSignal.unregister()
				if hasattr(m, "finalize") and not m.finalize in _elog_atexit_handlers:
					_elog_atexit_handlers.append(m.finalize)
					atexit_register(m.finalize)
			except (ImportError, AttributeError) as e:
				writemsg(_("!!! Error while importing logging modules "
					"while loading \"mod_%s\":\n") % str(s))
				writemsg("%s\n" % str(e), noiselevel=-1)
			except AlarmSignal:
				writemsg("Timeout in elog_process for system '%s'\n" % s,
					noiselevel=-1)
			except PortageException as e:
				writemsg("%s\n" % str(e), noiselevel=-1)