[gnome-continuous-yocto/gnomeostree-3.28-rocko: 160/218] bitbake: providers: Fix determinism issue
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 160/218] bitbake: providers: Fix determinism issue
- Date: Mon, 21 May 2018 08:48:42 +0000 (UTC)
commit fe2c3c59e3c7c98d1683a0aa81868b8696b1116b
Author: Richard Purdie <richard purdie linuxfoundation org>
Date: Sun Dec 10 22:31:24 2017 +0000
bitbake: 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.
(Bitbake rev: 223a0f68530571d2280f526bddbc718fa803a3dc)
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
bitbake/lib/bb/providers.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
---
diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py
index 443187e..c2aa98c 100644
--- a/bitbake/lib/bb/providers.py
+++ b/bitbake/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])
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]