Merged from trunk 8315:8319
authorFabian Groffen <grobian@gentoo.org>
Sat, 27 Oct 2007 18:40:05 +0000 (18:40 -0000)
committerFabian Groffen <grobian@gentoo.org>
Sat, 27 Oct 2007 18:40:05 +0000 (18:40 -0000)
   | 8316    | In portage.fetch(), condense digest check ouput to a single  |
   | zmedico | line for all digests.                                        |

   | 8317    | Fix broken $ROOT handling for setconfig in the MergeTask     |
   | zmedico | constructor.                                                 |

   | 8318    | Reuse an existing EmergeConfig instance instead of           |
   | zmedico | constructing a new one.                                      |

   | 8319    | Make depgraph._select_atoms() more flexible by allowing the  |
   | zmedico | repositories to be passed in as a parameter.                 |

svn path=/main/branches/prefix/; revision=8321

pym/_emerge/__init__.py
pym/portage/__init__.py

index b3d986a4f8cbcab3c14637b18b6c5da6575c74a4..72df41cd6581daef80247ee062eec58fda81c85e 100644 (file)
@@ -576,7 +576,7 @@ class RootConfig(object):
        particular $ROOT."""
        def __init__(self, trees):
                self.trees = trees
-               self.settings = EmergeConfig(trees["vartree"].settings, trees=trees)
+               self.settings = trees["vartree"].settings
                self.root = self.settings["ROOT"]
 
 def create_world_atom(pkg_key, metadata, args_set, root_config):
@@ -1517,8 +1517,6 @@ class depgraph(object):
                                        print "Priority:", dep_priority
                                vardb = self.roots[dep_root].trees["vartree"].dbapi
                                try:
-                                       self._populate_filtered_repo(dep_root, dep_string,
-                                               myuse=myuse, strict=strict)
                                        selected_atoms = self._select_atoms(dep_root,
                                                dep_string, myuse=myuse, strict=strict)
                                except portage.exception.InvalidDependString, e:
@@ -1942,16 +1940,22 @@ class depgraph(object):
                                if atom_populated:
                                        break
 
-       def _select_atoms(self, root, depstring, myuse=None, strict=True):
-               """This will raise InvalidDependString if necessary."""
+       def _select_atoms(self, root, depstring, myuse=None, strict=True,
+               trees=None):
+               """This will raise InvalidDependString if necessary. If trees is
+               None then self._filtered_trees is used."""
                pkgsettings = self.pkgsettings[root]
+               if trees is None:
+                       trees = self._filtered_trees
+                       self._populate_filtered_repo(root, depstring,
+                               myuse=myuse, strict=strict)
                if True:
                        try:
                                if not strict:
                                        portage.dep._dep_check_strict = False
                                mycheck = portage.dep_check(depstring, None,
                                        pkgsettings, myuse=myuse,
-                                       myroot=root, trees=self._filtered_trees)
+                                       myroot=root, trees=trees)
                        finally:
                                portage.dep._dep_check_strict = True
                        if not mycheck[0]:
@@ -3723,10 +3727,10 @@ class MergeTask(object):
                if settings.get("PORTAGE_DEBUG", "") == "1":
                        self.edebug = 1
                self.pkgsettings = {}
-               self.pkgsettings[self.target_root] = EmergeConfig(settings, setconfig=settings.setconfig)
-               if self.target_root != "/":
-                       self.pkgsettings["/"] = \
-                               EmergeConfig(trees["/"]["vartree"].settings, setconfig=settings.setconfig)
+               for root in trees:
+                       self.pkgsettings[root] = EmergeConfig(
+                               trees[root]["vartree"].settings,
+                               setconfig=trees[root]["vartree"].settings.setconfig)
                self.curval = 0
 
        def merge(self, mylist, favorites, mtimedb):
@@ -6393,14 +6397,18 @@ def load_emerge_config(trees=None):
                kwargs[k] = os.environ.get(envvar, None)
        trees = portage.create_trees(trees=trees, **kwargs)
 
+       for root in trees:
+               settings = trees[root]["vartree"].settings
+               settings = EmergeConfig(settings, trees=trees[root])
+               settings.lock()
+               trees[root]["vartree"].settings = settings
+
        settings = trees["/"]["vartree"].settings
 
        for myroot in trees:
                if myroot != "/":
                        settings = trees[myroot]["vartree"].settings
                        break
-       
-       settings = EmergeConfig(settings, trees=trees[settings["ROOT"]])
 
        mtimedbfile = os.path.join("/", portage.CACHE_PATH.lstrip(os.path.sep), "mtimedb")
        mtimedb = portage.MtimeDB(mtimedbfile)
index 7231934aec4ba6632a4fc5b33e7e09cc11f9853f..3e02d836f2ae1620b65e3250228fe6b768e2ea6a 100644 (file)
@@ -3002,9 +3002,12 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
                                                                eout = portage.output.EOutput()
                                                                eout.quiet = \
                                                                        mysettings.get("PORTAGE_QUIET", None) == "1"
-                                                               for digest_name in mydigests[myfile]:
+                                                               digests = mydigests.get(myfile)
+                                                               if digests:
+                                                                       digests = digests.keys()
+                                                                       digests.sort()
                                                                        eout.ebegin(
-                                                                               "%s %s ;-)" % (myfile, digest_name))
+                                                                               "%s %s ;-)" % (myfile, " ".join(digests)))
                                                                        eout.eend(0)
                                                                continue # fetch any remaining files