summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorJuro Bystricky <juro.bystricky@intel.com>2017-04-10 13:59:36 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-04-11 18:10:17 +0100
commit34db499e6bf1cd6cada582f43297085894211f75 (patch)
treeee7e7b26da24106b3500104827a35e90fdfe2839 /meta/lib
parenta4cca6a1311874da880e25c69f353f3565f6da7d (diff)
downloadpoky-34db499e6bf1cd6cada582f43297085894211f75.tar.gz
classutils.py: deterministic sorting
The method "prioritized" returns a list sorted by the value of the "priority" field, in descending order. However, if several list items have the same priority, the ordering of those items within the priority-sorted list becomes random. As a consequence, we may end up with a non-deterministic oe-terminal spawning, as several terminals have the same priority. So running commands such as $ bitbake xxx -cdevshell $ bitbake yyy -cmenuconfig may spawn a different terminal each time, for example sometimes Gnome and sometimes Konsole as hey have the same priority. Rather than modifying the priorities so they all differ, we sub-sort the list based on (terminal) names. This way we achieve a deterministic outcome. [YOCTO#10938] (From OE-Core rev: 82ae62f28dd2d5fb2fb261478ac6161315ac6c38) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oe/classutils.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/meta/lib/oe/classutils.py b/meta/lib/oe/classutils.py
index e7856c86f2..45cd5249be 100644
--- a/meta/lib/oe/classutils.py
+++ b/meta/lib/oe/classutils.py
@@ -36,7 +36,7 @@ abstract base classes out of the registry)."""
36 @classmethod 36 @classmethod
37 def prioritized(tcls): 37 def prioritized(tcls):
38 return sorted(list(tcls.registry.values()), 38 return sorted(list(tcls.registry.values()),
39 key=lambda v: v.priority, reverse=True) 39 key=lambda v: (v.priority, v.name), reverse=True)
40 40
41 def unregister(cls): 41 def unregister(cls):
42 for key in cls.registry.keys(): 42 for key in cls.registry.keys():