diff options
author | Michał Górny <mgorny@gentoo.org> | 2018-01-23 13:30:02 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2018-01-26 15:50:50 +0100 |
commit | 97595e02fc8eced9a1a54d246a4163fae6badcaf (patch) | |
tree | 871cd1faa84835ca5708299294ed7dae077b6734 /pym/gentoolkit/eshowkw/keywords_header.py | |
parent | eshowkw: Group stable and dev arches together (to match Bugzilla) (diff) | |
download | gentoolkit-97595e02fc8eced9a1a54d246a4163fae6badcaf.tar.gz gentoolkit-97595e02fc8eced9a1a54d246a4163fae6badcaf.tar.bz2 gentoolkit-97595e02fc8eced9a1a54d246a4163fae6badcaf.zip |
eshowkw: Sort pure ~arch arches after stable keyword arches
To match the new ordering on Bugzilla, order arches with pure ~arch
keywords after those having stable keywords. The idea behind it is to
make it easier to determine which arches to CC on stablereqs.
The pure ~arch arch list is hardcoded for now to mips + *-* (fbsd,
prefix). However, in the future it will be replaced by status defined
by arches.desc once that GLEP is finalized.
Diffstat (limited to 'pym/gentoolkit/eshowkw/keywords_header.py')
-rw-r--r-- | pym/gentoolkit/eshowkw/keywords_header.py | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/pym/gentoolkit/eshowkw/keywords_header.py b/pym/gentoolkit/eshowkw/keywords_header.py index 1a1a422..c9f2381 100644 --- a/pym/gentoolkit/eshowkw/keywords_header.py +++ b/pym/gentoolkit/eshowkw/keywords_header.py @@ -15,7 +15,7 @@ from portage.output import colorize from gentoolkit.eshowkw.display_pretty import colorize_string from gentoolkit.eshowkw.display_pretty import align_string -# Copied from ekeyword +# Copied from ekeyword, modified to support arch vs ~arch status def load_profile_data(portdir=None, repo='gentoo'): """Load the list of known arches from the tree @@ -25,7 +25,7 @@ def load_profile_data(portdir=None, repo='gentoo'): Returns: A dict mapping the keyword to its preferred state: - {'x86': 'stable', 'mips': 'dev', ...} + {'x86': ('stable', 'arch'), 'mips': ('dev', '~arch'), ...} """ if portdir is None: portdir = portage.db[portage.root]['vartree'].settings.repositories[repo].location @@ -71,16 +71,28 @@ def load_profile_data(portdir=None, repo='gentoo'): warning('could not read profile files: %s' % arch_list) warning('will not be able to verify args are correct') + # TODO: support arches.desc once the GLEP is finalized + # for now, we just hardcode ~mips + *-* (fbsd, prefix) + for k, v in arch_status.items(): + if k == 'mips' or '-' in k: + arch_status[k] = (v, '~arch') + else: + arch_status[k] = (v, 'arch') + return arch_status def gen_arch_list(status): _arch_status = load_profile_data() if status == "stable": - return [arch for arch in _arch_status if _arch_status[arch] == "stable"] + return [arch for arch in _arch_status if _arch_status[arch][0] == "stable"] elif status == "dev": - return [arch for arch in _arch_status if _arch_status[arch] == "dev"] + return [arch for arch in _arch_status if _arch_status[arch][0] == "dev"] elif status == "exp": - return [arch for arch in _arch_status if _arch_status[arch] == "exp"] + return [arch for arch in _arch_status if _arch_status[arch][0] == "exp"] + elif status == "arch": + return [arch for arch in _arch_status if _arch_status[arch][1] == "arch"] + elif status == "~arch": + return [arch for arch in _arch_status if _arch_status[arch][1] == "~arch"] else: raise TypeError @@ -88,6 +100,7 @@ class keywords_header: __IMPARCHS = gen_arch_list("stable") __DEV_ARCHS = gen_arch_list("dev") __EXP_ARCHS = gen_arch_list("exp") + __TESTING_KW_ARCHS = gen_arch_list("~arch") __ADDITIONAL_FIELDS = [ 'eapi', 'unused', 'slot' ] __EXTRA_FIELDS = [ 'repo' ] @@ -128,7 +141,13 @@ class keywords_header: levels[kw] = level break - normal.sort(key=lambda kw: (levels.get(kw, 99), kw.count('-'), kw)) + # sort by, in order (to match Bugzilla): + # 1. arch, then ~arch + # 2. profile stability + # 3. short keywords, then long (prefix, fbsd) + # 4. keyword name + normal.sort(key=lambda kw: (kw in self.__TESTING_KW_ARCHS, + levels.get(kw, 99), kw.count('-'), kw)) return normal def __readAdditionalFields(self): |