Ejemplo n.º 1
0
	def __init__(self, emerge_config=None, emerge_logging=False):
		'''Class init function

		@param emerge_config: optional an emerge_config instance to use
		@param emerge_logging: boolean, defaults to False
		'''
		if emerge_config is None:
			# need a basic options instance
			actions, opts, _files = parse_opts([], silent=True)
			emerge_config = load_emerge_config(
				action='sync', args=_files, opts=opts)

			# Parse EMERGE_DEFAULT_OPTS, for settings like
			# --package-moves=n.
			cmdline = portage.util.shlex_split(
				emerge_config.target_config.settings.get(
				"EMERGE_DEFAULT_OPTS", ""))
			emerge_config.opts = parse_opts(cmdline, silent=True)[1]

			if hasattr(portage, 'settings'):
				# cleanly destroy global objects
				portage._reset_legacy_globals()
				# update redundant global variables, for consistency
				# and in order to conserve memory
				portage.settings = emerge_config.target_config.settings
				portage.db = emerge_config.trees
				portage.root = portage.db._target_eroot

		self.emerge_config = emerge_config
		if emerge_logging:
			_emerge.emergelog._disable = False
		self.xterm_titles = "notitles" not in \
			self.emerge_config.target_config.settings.features
		emergelog(self.xterm_titles, " === sync")
Ejemplo n.º 2
0
    def __init__(self, emerge_config=None, emerge_logging=False):
        '''Class init function

		@param emerge_config: optional an emerge_config instance to use
		@param emerge_logging: boolean, defaults to False
		'''
        if emerge_config is None:
            # need a basic options instance
            actions, opts, _files = parse_opts([], silent=True)
            emerge_config = load_emerge_config(action='sync',
                                               args=_files,
                                               opts=opts)

            # Parse EMERGE_DEFAULT_OPTS, for settings like
            # --package-moves=n.
            cmdline = portage.util.shlex_split(
                emerge_config.target_config.settings.get(
                    "EMERGE_DEFAULT_OPTS", ""))
            emerge_config.opts = parse_opts(cmdline, silent=True)[1]

            if hasattr(portage, 'settings'):
                # cleanly destroy global objects
                portage._reset_legacy_globals()
                # update redundant global variables, for consistency
                # and in order to conserve memory
                portage.settings = emerge_config.target_config.settings
                portage.db = emerge_config.trees
                portage.root = portage.db._target_eroot

        self.emerge_config = emerge_config
        if emerge_logging:
            _emerge.emergelog._disable = False
        self.xterm_titles = "notitles" not in \
         self.emerge_config.target_config.settings.features
        emergelog(self.xterm_titles, " === sync")
Ejemplo n.º 3
0
	def fix(self, **kwargs):
		"""Attempt to fix any failed merges."""
		module_output = kwargs.get('module_output', None)
		failed_pkgs = self._failed_pkgs()
		if not failed_pkgs:
			return ['No failed merges found.']

		pkg_invalid_entries = set()
		pkg_atoms = set()
		self._get_pkg_atoms(failed_pkgs, pkg_atoms, pkg_invalid_entries)
		if pkg_invalid_entries:
			return pkg_invalid_entries

		try:
			self._tracking_file.save(failed_pkgs)
		except IOError as ex:
			errors = ['Unable to save failed merges to tracking file: %s\n'
				% str(ex)]
			errors.append(', '.join(sorted(failed_pkgs)))
			return errors
		self._remove_failed_dirs(failed_pkgs)
		results = self._emerge_pkg_atoms(module_output, pkg_atoms)
		# list any new failed merges
		for pkg in sorted(self._scan()):
			results.append("'%s' still found as a failed merge." % pkg)
		# reload config and remove successful packages from tracking file
		portage._reset_legacy_globals()
		vardb = portage.db[portage.root]['vartree'].dbapi
		still_failed_pkgs = {}
		for pkg, mtime in failed_pkgs.items():
			pkg_name = '%s' % pkg.replace(MERGING_IDENTIFIER, '')
			if not vardb.cpv_exists(pkg_name):
				still_failed_pkgs[pkg] = mtime
		self._tracking_file.save(still_failed_pkgs)
		return results
Ejemplo n.º 4
0
    def fix(self, **kwargs):
        """Attempt to fix any failed merges."""
        module_output = kwargs.get("module_output", None)
        failed_pkgs = self._failed_pkgs()
        if not failed_pkgs:
            return (True, ["No failed merges found."])

        pkg_invalid_entries = set()
        pkg_atoms = set()
        self._get_pkg_atoms(failed_pkgs, pkg_atoms, pkg_invalid_entries)
        if pkg_invalid_entries:
            return (False, pkg_invalid_entries)

        try:
            self._tracking_file.save(failed_pkgs)
        except IOError as ex:
            errors = [
                "Unable to save failed merges to tracking file: %s\n" % str(ex)
            ]
            errors.append(", ".join(sorted(failed_pkgs)))
            return (False, errors)
        self._remove_failed_dirs(failed_pkgs)
        results = self._emerge_pkg_atoms(module_output,
                                         pkg_atoms,
                                         yes=kwargs.get("options",
                                                        {}).get("yes", False))
        # list any new failed merges
        for pkg in sorted(self._scan()):
            results.append("'%s' still found as a failed merge." % pkg)
        # reload config and remove successful packages from tracking file
        portage._reset_legacy_globals()
        vardb = portage.db[portage.root]["vartree"].dbapi
        still_failed_pkgs = {}
        for pkg, mtime in failed_pkgs.items():
            pkg_name = "%s" % pkg.replace(MERGING_IDENTIFIER, "")
            if not vardb.cpv_exists(pkg_name):
                still_failed_pkgs[pkg] = mtime
        self._tracking_file.save(still_failed_pkgs)
        if still_failed_pkgs:
            return (False, results)
        return (True, results)
Ejemplo n.º 5
0
    def fix(self, **kwargs):
        """Attempt to fix any failed merges."""
        module_output = kwargs.get('module_output', None)
        failed_pkgs = self._failed_pkgs()
        if not failed_pkgs:
            return ['No failed merges found.']

        pkg_invalid_entries = set()
        pkg_atoms = set()
        self._get_pkg_atoms(failed_pkgs, pkg_atoms, pkg_invalid_entries)
        if pkg_invalid_entries:
            return pkg_invalid_entries

        try:
            self._tracking_file.save(failed_pkgs)
        except IOError as ex:
            errors = [
                'Unable to save failed merges to tracking file: %s\n' % str(ex)
            ]
            errors.append(', '.join(sorted(failed_pkgs)))
            return errors
        self._remove_failed_dirs(failed_pkgs)
        results = self._emerge_pkg_atoms(module_output, pkg_atoms)
        # list any new failed merges
        for pkg in sorted(self._scan()):
            results.append("'%s' still found as a failed merge." % pkg)
        # reload config and remove successful packages from tracking file
        portage._reset_legacy_globals()
        vardb = portage.db[portage.root]['vartree'].dbapi
        still_failed_pkgs = {}
        for pkg, mtime in failed_pkgs.items():
            pkg_name = '%s' % pkg.replace(MERGING_IDENTIFIER, '')
            if not vardb.cpv_exists(pkg_name):
                still_failed_pkgs[pkg] = mtime
        self._tracking_file.save(still_failed_pkgs)
        return results