aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2018-01-23 13:30:02 +0100
committerMichał Górny <mgorny@gentoo.org>2018-01-26 15:50:50 +0100
commit97595e02fc8eced9a1a54d246a4163fae6badcaf (patch)
tree871cd1faa84835ca5708299294ed7dae077b6734 /pym/gentoolkit/eshowkw/keywords_header.py
parenteshowkw: Group stable and dev arches together (to match Bugzilla) (diff)
downloadgentoolkit-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.py31
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):