From 1008e73d6eaac9496ebbb17a75a13389390e323e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 13 Apr 2008 19:17:34 +0000 Subject: Fix the _dep_check_composite_db visibility filtering some more. svn path=/main/trunk/; revision=9872 --- pym/_emerge/__init__.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 3e8b67bf8..f29bdc9a1 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -4366,21 +4366,17 @@ class depgraph(object): continue slots.add(graph_db.aux_get(cpv, ["SLOT"])[0]) ret = [] + if self._visible(pkg): + self._cpv_pkg_map[pkg.cpv] = pkg + ret.append(pkg.cpv) + slots.remove(pkg.metadata["SLOT"]) while slots: slot_atom = "%s:%s" % (atom_cp, slots.pop()) pkg, existing = self._depgraph._select_package( self._root, slot_atom) if not pkg: continue - if pkg.installed and "selective" not in self._depgraph.myparams: - try: - arg = self._depgraph._iter_atoms_for_pkg(pkg).next() - except (StopIteration, portage.exception.InvalidDependString): - arg = None - if arg: - continue - if pkg.installed and \ - not visible(self._depgraph.pkgsettings[pkg.root], pkg): + if not self._visible(pkg): continue self._cpv_pkg_map[pkg.cpv] = pkg ret.append(pkg.cpv) @@ -4389,6 +4385,19 @@ class depgraph(object): self._match_cache[orig_atom] = ret return ret[:] + def _visible(self, pkg): + if pkg.installed and "selective" not in self._depgraph.myparams: + try: + arg = self._depgraph._iter_atoms_for_pkg(pkg).next() + except (StopIteration, portage.exception.InvalidDependString): + arg = None + if arg: + return False + if pkg.installed and \ + not visible(self._depgraph.pkgsettings[pkg.root], pkg): + return False + return True + def _dep_expand(self, atom): """ This is only needed for old installed packages that may -- cgit v1.2.3-1-g7c22