diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-05-05 19:56:47 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-05-05 19:56:47 +0000 |
commit | e53c7e66dbe4d4a4debb9db789636b71a463db60 (patch) | |
tree | b8bba16d7f9c6cd91764f237cd6a071a4be275c5 | |
parent | 6a563df5b06f0d5250bca8000f93ef34bd89f008 (diff) | |
download | portage-e53c7e66dbe4d4a4debb9db789636b71a463db60.tar.gz portage-e53c7e66dbe4d4a4debb9db789636b71a463db60.tar.bz2 portage-e53c7e66dbe4d4a4debb9db789636b71a463db60.zip |
Use match_from_list in order to potentially avoid more blocks.
svn path=/main/trunk/; revision=6482
-rw-r--r-- | pym/emerge/__init__.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 3ee134c5d..f8c899e68 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -1903,7 +1903,6 @@ class depgraph: blocked_slots_final[cpv] = \ "%s:%s" % (portage.dep_getkey(cpv), final_db.aux_get(cpv, ["SLOT"])[0]) - blocked_slots_final_values = set(blocked_slots_final.itervalues()) for parent in list(self.blocker_parents[blocker]): ptype, proot, pcpv, pstatus = parent pdbapi = self.trees[proot][self.pkg_tree_map[ptype]].dbapi @@ -1926,15 +1925,16 @@ class depgraph: # merge of either package is triggered. continue if pstatus == "merge" and \ - slot_atom not in blocked_slots_final_values: - upgrade_matches = final_db.match(slot_atom) - if upgrade_matches: - # Apparently an upgrade may be able to invalidate - # this block. - upgrade_node = \ - self.pkg_node_map[proot][upgrade_matches[0]] - depends_on_order.add((upgrade_node, parent)) - continue + slot_atom in modified_slots[myroot]: + replacement = final_db.match(slot_atom) + if replacement: + if not portage.match_from_list(mydep, replacement): + # Apparently a replacement may be able to + # invalidate this block. + replacement_node = \ + self.pkg_node_map[proot][replacement[0]] + depends_on_order.add((replacement_node, parent)) + continue # None of the above blocker resolutions techniques apply, # so apparently this one is unresolvable. unresolved_blocks = True |