diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-07-06 09:21:44 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-07-06 09:21:44 +0000 |
commit | 63e2bd7bdfa4697d0e8def48ad3b25b2f143dc96 (patch) | |
tree | 0ae64205b2b9e5e1b5b7fc1456c00295846c3ff5 | |
parent | 470c43a6e7deb3fa159e537758d93d5ed22970a8 (diff) | |
download | portage-63e2bd7bdfa4697d0e8def48ad3b25b2f143dc96.tar.gz portage-63e2bd7bdfa4697d0e8def48ad3b25b2f143dc96.tar.bz2 portage-63e2bd7bdfa4697d0e8def48ad3b25b2f143dc96.zip |
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. (trunk r7180)
svn path=/main/branches/2.1.2/; revision=7181
-rwxr-xr-x | bin/emerge | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/bin/emerge b/bin/emerge index 599c9bd6e..c9ce08464 100755 --- a/bin/emerge +++ b/bin/emerge @@ -720,8 +720,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): |