aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-12-10 22:31:24 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-12-10 22:35:10 +0000
commitebce92bf8d71f8a6e8af1c6cf6ba335faf9d67c8 (patch)
tree85e3dfaf9123f1677c758eee050ad1675dcd5fef /lib
parent2ba8a6b25ccc12e7b543e8450121e5311c7a701d (diff)
downloadbitbake-ebce92bf8d71f8a6e8af1c6cf6ba335faf9d67c8.tar.gz
bitbake-ebce92bf8d71f8a6e8af1c6cf6ba335faf9d67c8.tar.bz2
bitbake-ebce92bf8d71f8a6e8af1c6cf6ba335faf9d67c8.zip
providers: Fix determinism issue
We saw builds where runtime providers were sometimes changing order and the build result was therefore non-deterministic. For example it could show: DEBUG: providers for lib32-initd-functions are: ['lib32-lsbinitscripts', 'lib32-initscripts'] or DEBUG: providers for lib32-initd-functions are: ['lib32-initscripts', 'lib32-lsbinitscripts'] which could cause a test to pass or fail. This change ensures we don't rely on the random order of dictonaries in memory and act deterministically. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/bb/providers.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index 443187e1..c2aa98c0 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -244,17 +244,17 @@ def _filterProviders(providers, item, cfgData, dataCache):
pkg_pn[pn] = []
pkg_pn[pn].append(p)
- logger.debug(1, "providers for %s are: %s", item, list(pkg_pn.keys()))
+ logger.debug(1, "providers for %s are: %s", item, list(sorted(pkg_pn.keys())))
# First add PREFERRED_VERSIONS
- for pn in pkg_pn:
+ for pn in sorted(pkg_pn):
sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn)
preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
if preferred_versions[pn][1]:
eligible.append(preferred_versions[pn][1])
# Now add latest versions
- for pn in sortpkg_pn:
+ for pn in sorted(sortpkg_pn):
if pn in preferred_versions and preferred_versions[pn][1]:
continue
preferred_versions[pn] = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[pn][0])