summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-10-05 23:50:28 -0700
committerZac Medico <zmedico@gentoo.org>2010-10-05 23:50:28 -0700
commitecc37e000481c246ff6dfa58127e81a772989f86 (patch)
treec8543c2f883c181bb6f1b3af38581c78dd642eca /pym
parent18c4197fc5ab7350ae6c2785ae4a62340d866927 (diff)
downloadportage-ecc37e000481c246ff6dfa58127e81a772989f86.tar.gz
portage-ecc37e000481c246ff6dfa58127e81a772989f86.tar.bz2
portage-ecc37e000481c246ff6dfa58127e81a772989f86.zip
Fix _iter_match_pkgs installed multislot breakage
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/depgraph.py11
-rw-r--r--pym/portage/dep/__init__.py7
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)