diff options
Diffstat (limited to 'pym/_emerge')
-rw-r--r-- | pym/_emerge/Package.py | 31 | ||||
-rw-r--r-- | pym/_emerge/resolver/output.py | 11 |
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", "~") |