From 7d28024d466df767af64596ef68224f93e394040 Mon Sep 17 00:00:00 2001 From: Sebastian Luther Date: Wed, 15 Sep 2010 08:29:10 +0200 Subject: [PATCH] Limit the spam caused by unmatched removal atoms --- pym/portage/util/__init__.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 4cd394b63..961743ce2 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -236,7 +236,7 @@ def stack_lists(lists, incremental=1, remember_source_file=False, warn_for_unmat distinct values using '-value' notation. Higher index is preferenced. all elements must be hashable.""" - matched_removals = set() + unmatched_removals = {} new_list = {} for sub_list in lists: for token in sub_list: @@ -256,19 +256,22 @@ def stack_lists(lists, incremental=1, remember_source_file=False, warn_for_unmat try: new_list.pop(token[1:]) except KeyError: - if warn_for_unmatched_removal and \ - not (source_file and token_key in matched_removals): - writemsg(_("--- Unmatch removal atom in %s: %s\n") % (source_file, token), - noiselevel=-1) - else: - # Remember this match, in case this profile is - # inherited multiple times in this stack. - matched_removals.add(token_key) + unmatched_removals.setdefault(source_file, set()).add(token) else: new_list[token] = source_file else: new_list[token] = source_file + if warn_for_unmatched_removal: + for source_file, tokens in unmatched_removals.items(): + if len(tokens) > 3: + selected = [tokens.pop(), tokens.pop(), tokens.pop()] + writemsg(_("--- Unmatch removal atoms in %s: %s and %s more\n") % (source_file, ", ".join(selected), len(tokens)-3), + noiselevel=-1) + else: + writemsg(_("--- Unmatch removal atom(s) in %s: %s\n") % (source_file, ", ".join(tokens)), + noiselevel=-1) + if remember_source_file: return list(new_list.items()) else: -- 2.26.2