From 334c5da7f27035d65e99a917d4e78f97719192a7 Mon Sep 17 00:00:00 2001 From: Fabian Groffen Date: Sun, 2 Nov 2008 08:01:32 +0000 Subject: [PATCH] Merged from trunk -r11785:11791 | 11786 | Bug #239015 - Disable unmerge operations for | | zmedico | EverythingSet/@installed. | | 11787 | In Scheduler._calc_resume_list(), use self.pkgsettings | | zmedico | instead of the the temportary depgraph's. | | 11788 | TODO: In case some elf files collide with blocked packages, | | zmedico | ensure that NEEDED data from include_file overrides the | | | stale NEEDED data from the colliding files in the blocked | | | packages. | | 11789 | In _validate_deps(), show the ebuild version to clarify | | zmedico | which ebuild the errors belong to. | | 11790 | In config.setcpv(), ensure that A and AA aren't in the env | | zmedico | dict. | | 11791 | In SetConfig.getSetAtoms(), access self.psets directly in | | zmedico | order to avoid making a copy and also to avoid potential | | | swallowing of an unexpected KeyError. | svn path=/main/branches/prefix/; revision=11795 --- pym/_emerge/__init__.py | 2 +- pym/portage/__init__.py | 24 ++++++++++++++---------- pym/portage/dbapi/vartree.py | 3 +++ pym/portage/sets/__init__.py | 3 ++- pym/portage/sets/dbapi.py | 2 +- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 12308d828..c7f8aa88e 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -10312,7 +10312,7 @@ class Scheduler(PollScheduler): msg += " dropped due to unsatisfied dependency." for line in textwrap.wrap(msg, msg_width): eerror(line, phase="other", key=pkg.cpv) - settings = mydepgraph.pkgsettings[pkg.root] + settings = self.pkgsettings[pkg.root] # Ensure that log collection from $T is disabled inside # elog_process(), since any logs that might exist are # not valid here. diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 76b7704dd..5f13e4217 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1965,7 +1965,7 @@ class config(object): env_configdict = self.configdict["env"] pkg_configdict = self.configdict["pkg"] previous_iuse = pkg_configdict.get("IUSE") - for k in ("CATEGORY", "PKGUSE", "PF", "PORTAGE_USE"): + for k in ("A", "AA", "CATEGORY", "PKGUSE", "PF", "PORTAGE_USE"): env_configdict.pop(k, None) pkg_configdict["CATEGORY"] = cat pkg_configdict["PF"] = pf @@ -5911,27 +5911,31 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi): dep_check_trees[myroot]["porttree"] = \ FakeTree(fakedbapi(settings=mysettings)) + msgs = [] for dep_type in dep_keys: mycheck = dep_check(metadata[dep_type], None, mysettings, myuse="all", myroot=myroot, trees=dep_check_trees) if not mycheck[0]: - writemsg("%s: %s\n%s\n" % ( - dep_type, metadata[dep_type], mycheck[1]), noiselevel=-1) - if mydo not in invalid_dep_exempt_phases: - return 1 + msgs.append(" %s: %s\n %s\n" % ( + dep_type, metadata[dep_type], mycheck[1])) for k in misc_keys: try: portage.dep.use_reduce( portage.dep.paren_reduce(metadata[k]), matchall=True) except portage.exception.InvalidDependString, e: - writemsg("%s: %s\n%s\n" % ( - k, metadata[k], str(e)), noiselevel=-1) - if mydo not in invalid_dep_exempt_phases: - return 1 + msgs.append(" %s: %s\n %s\n" % ( + k, metadata[k], str(e))) if not metadata["SLOT"]: - writemsg("SLOT is undefined\n", noiselevel=-1) + msgs.append(" SLOT is undefined\n") + + if msgs: + portage.util.writemsg_level("Error(s) in metadata for '%s':\n" % \ + (mysettings.mycpv,), level=logging.ERROR, noiselevel=-1) + for x in msgs: + portage.util.writemsg_level(x, + level=logging.ERROR, noiselevel=-1) if mydo not in invalid_dep_exempt_phases: return 1 diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 6827ea053..a9ece12e2 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3740,6 +3740,9 @@ class dblink(object): gid=portage_gid, mode=02750, mask=02) writedict(cfgfiledict, conf_mem_file) + # TODO: In case some elf files collide with blocked packages, + # ensure that NEEDED data from include_file overrides the stale + # NEEDED data from the colliding files in the blocked packages. exclude_pkgs = set(dblnk.mycpv for dblnk in others_in_slot) if ostype == "Darwin": neededfile = "NEEDED.MACHO.3" diff --git a/pym/portage/sets/__init__.py b/pym/portage/sets/__init__.py index a668c8324..ef7c1d938 100644 --- a/pym/portage/sets/__init__.py +++ b/pym/portage/sets/__init__.py @@ -138,8 +138,9 @@ class SetConfig(object): """ This raises PackageSetNotFound if the give setname does not exist. """ + self._parse() try: - myset = self.getSets()[setname] + myset = self.psets[setname] except KeyError: raise PackageSetNotFound(setname) myatoms = myset.getAtoms() diff --git a/pym/portage/sets/dbapi.py b/pym/portage/sets/dbapi.py index 4ab1252d6..877c45cee 100644 --- a/pym/portage/sets/dbapi.py +++ b/pym/portage/sets/dbapi.py @@ -11,7 +11,7 @@ __all__ = ["CategorySet", "DowngradeSet", "EverythingSet", "OwnerSet", "VariableSet"] class EverythingSet(PackageSet): - _operations = ["merge", "unmerge"] + _operations = ["merge"] description = "Package set which contains SLOT " + \ "atoms to match all installed packages" _filter = None -- 2.26.2