summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-10-05 23:50:28 -0700
committerZac Medico <zmedico@gentoo.org>2010-10-06 16:32:40 -0700
commit980e83339c9265e24e0e2c33c067c3aa3ba1a5b7 (patch)
treeb8752cae7aef3287de84b9c993c7b1c69a20ffc4
parentd9396b733d27df2bd12cf5ebd427a09c907cde37 (diff)
downloadportage-980e83339c9265e24e0e2c33c067c3aa3ba1a5b7.tar.gz
portage-980e83339c9265e24e0e2c33c067c3aa3ba1a5b7.tar.bz2
portage-980e83339c9265e24e0e2c33c067c3aa3ba1a5b7.zip
Fix _iter_match_pkgs installed multislot breakage
-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 7e99a24e8..e9d68a18e 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -2488,6 +2488,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
@@ -2507,14 +2508,10 @@ class depgraph(object):
root_config, installed=installed)
# 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:
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)