diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-01-31 02:01:48 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-01-31 02:01:48 -0800 |
commit | 2a2b9e6485950757c59a1d5aa026d7f875311def (patch) | |
tree | 05eb53c80c9885802ac1b9eceb7f8cb6c7d55464 /pym/_emerge | |
parent | aa2c6ac3fa1890957f6c6cb85795cfc05023c56d (diff) | |
download | portage-2a2b9e6485950757c59a1d5aa026d7f875311def.tar.gz portage-2a2b9e6485950757c59a1d5aa026d7f875311def.tar.bz2 portage-2a2b9e6485950757c59a1d5aa026d7f875311def.zip |
Display: Simplify mask code for bug #58416.
Hopefully this makes the logic more understandable, though it may
support fewer cases. If we want to handle more cases then hopefully
we can do it without making the code too complex.
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", "~") |