[oe-commits] [bitbake] branch 1.32 updated: providers: Fix determinism issue

git at git.openembedded.org git at git.openembedded.org
Fri Mar 9 14:12:30 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch 1.32
in repository bitbake.

The following commit(s) were added to refs/heads/1.32 by this push:
     new da85da9  providers: Fix determinism issue
da85da9 is described below

commit da85da9b58ed252c7b80a437fb5babff9e6dde48
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Sun Dec 10 22:31:24 2017 +0000

    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 at linuxfoundation.org>
---
 lib/bb/providers.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index db02a0b..fe01cad 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -245,17 +245,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])

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list