diff options
authorJuro Bystricky <>2017-04-10 13:59:36 -0700
committerRichard Purdie <>2017-04-11 00:57:07 +0100
commit82ae62f28dd2d5fb2fb261478ac6161315ac6c38 (patch)
parentec2931852b2a097c9c8cb0d7288f5ca1d79f401c (diff)
openembedded-core-contrib-82ae62f28dd2d5fb2fb261478ac6161315ac6c38.tar.bz2 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] Signed-off-by: Juro Bystricky <> Signed-off-by: Richard Purdie <>
1 files changed, 1 insertions, 1 deletions
diff --git a/meta/lib/oe/ b/meta/lib/oe/
index e7856c86f2..45cd5249be 100644
--- a/meta/lib/oe/
+++ b/meta/lib/oe/
@@ -36,7 +36,7 @@ abstract base classes out of the registry)."""
def prioritized(tcls):
return sorted(list(tcls.registry.values()),
- key=lambda v: v.priority, reverse=True)
+ key=lambda v: (v.priority,, reverse=True)
def unregister(cls):
for key in cls.registry.keys():