From ecc37e000481c246ff6dfa58127e81a772989f86 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 5 Oct 2010 23:50:28 -0700 Subject: Fix _iter_match_pkgs installed multislot breakage --- pym/_emerge/depgraph.py | 11 ++++------- pym/portage/dep/__init__.py | 7 +++++++ 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index a2a95de3f..cfdc03e52 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -2487,6 +2487,7 @@ class depgraph(object): # Therefore, assume that such SLOT dependencies are already # satisfied rather than forcing a rebuild. installed = pkg_type == 'installed' + ignore_installed_slot = False if installed and not cpv_list and atom.slot: for cpv in db.match(atom.cp): slot_available = False @@ -2506,14 +2507,10 @@ class depgraph(object): root_config, installed=installed, myrepo = atom.repo) # Remove the slot from the atom and verify that # the package matches the resulting atom. - atom_without_slot = portage.dep.remove_slot(atom) - if atom.use: - atom_without_slot += str(atom.use) - atom_without_slot = portage.dep.Atom(atom_without_slot) if portage.match_from_list( - atom_without_slot, [inst_pkg]): - cpv_list = [inst_pkg.cpv] - break + atom.without_slot, [inst_pkg]): + yield inst_pkg + return if cpv_list: atom_set = InternalPackageSet(initial_atoms=(atom,), diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py index 3d7c554c4..268ebb643 100644 --- a/pym/portage/dep/__init__.py +++ b/pym/portage/dep/__init__.py @@ -1119,6 +1119,13 @@ class Atom(_atom_base): return Atom(self.replace(_repo_separator + self.repo, '', 1), allow_wildcard=True) + @property + def without_slot(self): + if self.slot is None: + return self + return Atom(self.replace(_slot_separator + self.slot, '', 1), + allow_repo=True, allow_wildcard=True) + def __setattr__(self, name, value): raise AttributeError("Atom instances are immutable", self.__class__, name, value) -- cgit v1.2.3-1-g7c22