diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-10-05 23:50:28 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-10-05 23:50:28 -0700 |
commit | ecc37e000481c246ff6dfa58127e81a772989f86 (patch) | |
tree | c8543c2f883c181bb6f1b3af38581c78dd642eca | |
parent | 18c4197fc5ab7350ae6c2785ae4a62340d866927 (diff) | |
download | portage-ecc37e000481c246ff6dfa58127e81a772989f86.tar.gz portage-ecc37e000481c246ff6dfa58127e81a772989f86.tar.bz2 portage-ecc37e000481c246ff6dfa58127e81a772989f86.zip |
Fix _iter_match_pkgs installed multislot breakage
-rw-r--r-- | pym/_emerge/depgraph.py | 11 | ||||
-rw-r--r-- | pym/portage/dep/__init__.py | 7 |
2 files changed, 11 insertions, 7 deletions
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) |