summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/Package.py31
-rw-r--r--pym/_emerge/resolver/output.py11
2 files changed, 22 insertions, 20 deletions
diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
index 9f210570d..dcc6a0c46 100644
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@ -237,25 +237,26 @@ class Package(Task):
return True
- def accepted_keyword(self):
- """returns the keyword used from the ebuild's KEYWORDS string"""
+ def get_keyword_mask(self):
+ """returns None, 'missing', or 'unstable'."""
- missing, _keywords = \
- self.root_config.settings._getRawMissingKeywords(
- self.cpv, self.metadata)
- unmasks = self.root_config.settings._getPKeywords(
+ missing = self.root_config.settings._getRawMissingKeywords(
self.cpv, self.metadata)
+ if not missing:
+ return None
+
if '**' in missing:
- return '**'
- if missing: # keywords to evaluate
- for keyword in _keywords + unmasks:
- if keyword == '**':
- return keyword
- used_keyword = '~' + keyword
- if used_keyword in missing:
- return used_keyword
- return ''
+ return 'missing'
+
+ global_accept_keywords = frozenset(
+ self.root_config.settings.get("ACCEPT_KEYWORDS", "").split())
+
+ for keyword in missing:
+ if keyword.lstrip("~") in global_accept_keywords:
+ return 'unstable'
+
+ return 'missing'
def isHardMasked(self):
"""returns a bool if the cpv is in the list of
diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
index be07656a4..46e22808a 100644
--- a/pym/_emerge/resolver/output.py
+++ b/pym/_emerge/resolver/output.py
@@ -164,16 +164,17 @@ class Display(object):
"""
@param pkg: _emerge.Package instance
"""
- used_keyword = pkg.accepted_keyword()
hardmasked = pkg.isHardMasked()
mask_str = " "
if hardmasked:
mask_str = colorize("BAD", "#")
- elif not used_keyword:
- pass
- elif used_keyword not in self.pkgsettings['ACCEPT_KEYWORDS'].split():
- if used_keyword == "**":
+ else:
+ keyword_mask = pkg.get_keyword_mask()
+
+ if keyword_mask is None:
+ pass
+ elif keyword_mask == "missing":
mask_str = colorize("BAD", "*")
else:
mask_str = colorize("WARN", "~")