From 81ec22fe6a05bae56e9585f4d6a128f3d79d815a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 5 Nov 2007 22:42:16 +0000 Subject: Allow multislot packages to be added to the world file via --noreplace. Having these atoms in the world file will trigger recommendations to run emaint in some cases, like when running `emerge -e world`. The atoms need to be in the world file to prevent multislot packages from being removed by --depclean though. svn path=/main/trunk/; revision=8436 --- pym/_emerge/__init__.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 0eb66250e..933c4ce9b 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -633,15 +633,17 @@ def create_world_atom(pkg_key, metadata, args_set, root_config): slot_atom = "%s:%s" % (cp, metadata["SLOT"]) # First verify the slot is in the portage tree to avoid # adding a bogus slot like that produced by multislot. - if portdb.match(slot_atom): - # Now verify that the argument is precise enough to identify a - # specific slot. - matches = portdb.match(arg_atom) - matched_slots = set() - for cpv in matches: - matched_slots.add(portdb.aux_get(cpv, ["SLOT"])[0]) - if len(matched_slots) == 1: - new_world_atom = slot_atom + mydb = portdb + if not portdb.match(slot_atom): + mydb = vardb + # Now verify that the argument is precise + # enough to identify a specific slot. + matches = mydb.match(arg_atom) + matched_slots = set() + for cpv in matches: + matched_slots.add(mydb.aux_get(cpv, ["SLOT"])[0]) + if len(matched_slots) == 1: + new_world_atom = slot_atom if new_world_atom == sets["world"].findAtomForPackage(pkg_key, metadata): # Both atoms would be identical, so there's nothing to add. return None -- cgit v1.2.3-1-g7c22