gen_kobject_list.py: OrderedDict for < 3.6 determinism
Dictionaries are iterated in a random order by Python 3.5 and before. This could have caused "Unstable" CI in PR #13921 and maybe others. Anyway we want builds to be determimistic by default. Explicit randomness can be added for better coverage but not by default. 1. When running "make kobj_types_h_target" repeatedly one can observe that the following .h files keep changing in build/zephyr/include/generated/: - kobj-types-enum.h - otype-to-str.h - otype-to-size.h Switching kobjects to OrderedDict makes these 3 .h files deterministic. 2. When running this test repeatedly with CONFIG_USERSPACE=y: rm build/zephyr/*.gperf && make -C build obj_list ... the dict used for --gperf-output seems to be deterministic, probably because its keys are all integers (memory addresses). However we can't take that for granted with Python < 3.6 so out of caution also switch the output of find_objects() in elf_helper.py to a sorted OrderedDict. PS: I would normally prefer official Python documentation to StackOverflow however this one is a good summary and has all the multiple pointers to the... official Python documentation. Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This commit is contained in:
parent
73cb0bf306
commit
f78288be20
3 changed files with 39 additions and 16 deletions
|
@ -105,6 +105,9 @@ def main():
|
|||
syms = eh.get_symbols()
|
||||
max_threads = syms["CONFIG_MAX_THREAD_BYTES"] * 8
|
||||
objs = eh.find_kobjects(syms)
|
||||
if not objs:
|
||||
sys.stderr.write("WARNING: zero kobject found in %s\n"
|
||||
% args.kernel)
|
||||
|
||||
thread_counter = eh.get_thread_counter()
|
||||
if thread_counter > max_threads:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue