aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscarabeus <scarabeus@gentoo.org>2010-11-21 16:25:36 +0000
committerscarabeus <scarabeus@gentoo.org>2010-11-21 16:25:36 +0000
commit2216676c4b7aff010e0cf97586ab233ade3bf536 (patch)
treea163e10e1952d5f673a6f535c9a71395472e1bfe
parentFix UnicodeDecodeError in setup.py, bug 346001 (diff)
downloadgentoolkit-2216676c4b7aff010e0cf97586ab233ade3bf536.tar.gz
gentoolkit-2216676c4b7aff010e0cf97586ab233ade3bf536.tar.bz2
gentoolkit-2216676c4b7aff010e0cf97586ab233ade3bf536.zip
Compare keywords not as exact line match but separately. This allows multiple combined versions to overshadow.
svn path=/trunk/gentoolkit/; revision=859
-rw-r--r--pym/gentoolkit/eshowkw/keywords_content.py27
1 files changed, 13 insertions, 14 deletions
diff --git a/pym/gentoolkit/eshowkw/keywords_content.py b/pym/gentoolkit/eshowkw/keywords_content.py
index 530e3f6..56b856b 100644
--- a/pym/gentoolkit/eshowkw/keywords_content.py
+++ b/pym/gentoolkit/eshowkw/keywords_content.py
@@ -38,6 +38,11 @@ class keywords_content:
result.append(item)
return result
+ def __cleanKeyword(self, keyword):
+ """Remove masked arches and hardmasks from keywords since we don't care about that."""
+ return ["%s" % x for x in keyword.split()
+ if x != '-*' and not x.startswith('-')]
+
def __listRedundantAll(self, keywords):
"""Search for redundant packages using all versions ignoring its slotting."""
return list(self.__compareSelected(list(keywords)))
@@ -61,26 +66,20 @@ class keywords_content:
def __compareKeywordWithRest(self, keyword, keywords):
"""Compare keywords with list of keywords."""
- for key in keywords:
- if self.__checkShadow(keyword, key):
+ kw = self.__cleanKeyword(keyword)
+ for kwi in keywords:
+ kwi = self.__cleanKeyword(kwi)
+ kw = self.__checkShadow(kw, kwi)
+ if not kw:
return True
return False
def __checkShadow(self, old, new):
"""Check if package version is overshadowed by other package version."""
- # remove -* and -arch since they are useless for us
- newclean = ["%s" % x for x in new.split()
- if x != '-*' and not x.startswith('-')]
- oldclean = ["%s" % x for x in old.split()
- if x != '-*' and not x.startswith('-')]
-
- tmp = set(newclean)
- tmp.update("~%s" % x for x in newclean
+ tmp = set(new)
+ tmp.update("~%s" % x for x in new
if not x.startswith("~"))
- if not set(oldclean).difference(tmp):
- return True
- else:
- return False
+ return list(set(old).difference(tmp))
def __init__(self, keywords, slots, ignore_slots = False):
"""Query all relevant data for redundancy package checking"""