From a01a40e8dca76b83009fc9479a7021314b8b06ab Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 17 Feb 2008 01:59:25 +0000 Subject: Now that unmerge() preserves the order that it's given, if two different slots of the same package are being unmerged then they are not necessarily unmerged consecutively. To make the display less confusing, never display packages as "protected" or "omitted" when they actually belong to the overall set of "selected" packages to be unmerged. svn path=/main/trunk/; revision=9348 --- pym/_emerge/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index be53f71b8..6d4ddb3de 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -5048,15 +5048,24 @@ def unmerge(root_config, myopts, unmerge_action, finally: if vdb_lock: portage.locks.unlockdir(vdb_lock) + all_selected = set() + for x in pkgmap: + all_selected.update(x["selected"]) for x in xrange(len(pkgmap)): selected = pkgmap[x]["selected"] if not selected: continue + for mytype, mylist in pkgmap[x].iteritems(): + if mytype == "selected": + continue + pkgmap[x][mytype] = \ + [cpv for cpv in mylist if cpv not in all_selected] cp = portage.cpv_getkey(selected[0]) for y in localtree.dep_match(cp): if y not in pkgmap[x]["omitted"] and \ y not in pkgmap[x]["selected"] and \ - y not in pkgmap[x]["protected"]: + y not in pkgmap[x]["protected"] and \ + y not in all_selected: pkgmap[x]["omitted"].append(y) if global_unmerge and not pkgmap[x]["selected"]: #avoid cluttering the preview printout with stuff that isn't getting unmerged -- cgit v1.2.3-1-g7c22