From: Zac Medico Date: Sun, 17 Feb 2008 01:59:25 +0000 (-0000) Subject: Now that unmerge() preserves the order that it's given, if two different X-Git-Tag: v2.2_pre3~34 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=a01a40e8dca76b83009fc9479a7021314b8b06ab;p=portage.git 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 --- 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