From 3e05607151525d6366c70186629aa7386e1613e1 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 6 Jul 2007 09:20:26 +0000 Subject: Don't exclude system virtuals from world since they can match multiple old-style virtuals but only one of them will be pulled in by update or depclean. svn path=/main/trunk/; revision=7180 --- pym/emerge/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'pym') diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index d5a0b053f..dc1df199d 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -719,8 +719,16 @@ def create_world_atom(pkg_key, metadata, args_set, sets, portdb): if new_world_atom == sets["world"].findAtomForPackage(pkg_key, metadata): # Both atoms would be identical, so there's nothing to add. return None - if not slotted and sets["system"].findAtomForPackage(pkg_key, metadata): - return None + if not slotted: + # Unlike world atoms, system atoms are not greedy for slots, so they + # can't be safely excluded from world if they are slotted. + system_atom = sets["system"].findAtomForPackage(pkg_key, metadata) + if system_atom and \ + not portage.dep_getkey(system_atom).startswith("virtual/"): + # System virtuals aren't safe to exclude from world since they can + # match multiple old-style virtuals but only one of them will be + # pulled in by update or depclean. + return None return new_world_atom def filter_iuse_defaults(iuse): -- cgit v1.2.3-1-g7c22