commit:     70b2518f12f63071f0192c23826188bd456698e7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 23 21:42:19 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jan 26 14:50:50 2018 +0000
URL:        https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=70b2518f

eshowkw: Always group Prefix keywords last

Always group all Prefix keywords after other types of keywords. This
not only ensures that fbsd sorts first but more importantly stabilizes
the LHS output between regular and -P variant -- that is, -P always adds
additional keywords at the end.

 pym/gentoolkit/eshowkw/keywords_header.py | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/pym/gentoolkit/eshowkw/keywords_header.py 
b/pym/gentoolkit/eshowkw/keywords_header.py
index ce3e8d4..6557f60 100644
--- a/pym/gentoolkit/eshowkw/keywords_header.py
+++ b/pym/gentoolkit/eshowkw/keywords_header.py
@@ -142,12 +142,16 @@ class keywords_header:
                                        break
 
                # sort by, in order (to match Bugzilla):
-               # 1. arch, then ~arch
-               # 2. profile stability
-               # 3. short keywords, then long (prefix, fbsd)
-               # 4. keyword name in reverse component order
-               normal.sort(key=lambda kw: (kw in self.__TESTING_KW_ARCHS,
-                       levels.get(kw, 99), kw.count('-'), 
list(reversed(kw.split('-')))))
+               # 1. non-prefix, then prefix (stable output between -P and not)
+               # 2. arch, then ~arch
+               # 3. profile stability
+               # 4. short keywords, then long (prefix, fbsd)
+               # 5. keyword name in reverse component order
+               normal.sort(key=lambda kw: (self.__isPrefix(kw),
+                       kw in self.__TESTING_KW_ARCHS,
+                       levels.get(kw, 99),
+                       kw.count('-'),
+                       list(reversed(kw.split('-')))))
                return normal
 
        def __readAdditionalFields(self):

Reply via email to