From: Zac Medico Date: Sun, 13 Apr 2008 22:22:14 +0000 (-0000) Subject: To optimize consistency of atom selections, add all of the root packages X-Git-Tag: v2.1.5~179 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=87bb43399c85d59ce0c1f8615110add12b26df7a;p=portage.git To optimize consistency of atom selections, add all of the root packages to the graph before processing any dependencies. (trunk r9874) svn path=/main/branches/2.1.2/; revision=9878 --- diff --git a/bin/emerge b/bin/emerge index a2a27850a..c803afb35 100755 --- a/bin/emerge +++ b/bin/emerge @@ -2535,6 +2535,7 @@ class depgraph(object): while args: arg = args.pop() for atom in arg.set: + self.spinner.update() atom_cp = portage.dep_getkey(atom) try: pprovided = pprovideddict.get(portage.dep_getkey(atom)) @@ -2585,16 +2586,12 @@ class depgraph(object): dep = Dependency(atom=atom, onlydeps=onlydeps, root=myroot, parent=arg) - self._dep_stack.append(dep) # Add the selected package to the graph as soon as possible # so that later dep_check() calls can use it as feedback # for making more consistent atom selections. if not self._add_pkg(pkg, dep.parent, priority=dep.priority, depth=dep.depth): - return 0, myfavorites - - if not self._create_graph(): if isinstance(arg, SetArg): sys.stderr.write(("\n\n!!! Problem resolving " + \ "dependencies for %s from %s\n") % \ @@ -2603,6 +2600,7 @@ class depgraph(object): sys.stderr.write(("\n\n!!! Problem resolving " + \ "dependencies for %s\n") % atom) return 0, myfavorites + except portage_exception.MissingSignature, e: portage.writemsg("\n\n!!! A missing gpg signature is preventing portage from calculating the\n") portage.writemsg("!!! required dependencies. This is a security feature enabled by the admin\n") @@ -2624,6 +2622,11 @@ class depgraph(object): print >> sys.stderr, "!!!", str(e), getattr(e, "__module__", None) raise + # Now that the root packages have been added to the graph, + # process the dependencies. + if not self._create_graph(): + return 0, myfavorites + missing=0 if "--usepkgonly" in self.myopts: for xs in self.digraph.all_nodes():