From a44285fc4109236ab89f7aad0a1fc9220eec19b6 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 19 Nov 2012 15:01:20 +0000 Subject: [PATCH] parse/cache/cooker: Preserve order in the file inclusion list The data returned by get_file_depends() may me used in contexts like checksums where order is important. The current usage of sets means that some of the checksums can change in circumstances they should not. This patch changes to use lists, thereby removing the problem. Signed-off-by: Richard Purdie --- lib/bb/cache.py | 4 ++-- lib/bb/cooker.py | 4 ++-- lib/bb/parse/__init__.py | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/bb/cache.py b/lib/bb/cache.py index 619b9eec24d..a3c073a59fb 100644 --- a/lib/bb/cache.py +++ b/lib/bb/cache.py @@ -405,12 +405,12 @@ class Cache(object): """Parse the specified filename, returning the recipe information""" infos = [] datastores = cls.load_bbfile(filename, appends, configdata) - depends = set() + depends = [] for variant, data in sorted(datastores.iteritems(), key=lambda i: i[0], reverse=True): virtualfn = cls.realfn2virtual(filename, variant) - depends |= (data.getVar("__depends", False) or set()) + depends = depends + (data.getVar("__depends", False) or []) if depends and not variant: data.setVar("__depends", depends) diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index 5f88f1ff59a..6b58f91c6bd 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -696,8 +696,8 @@ class BBCooker: # Generate a list of parsed configuration files by searching the files # listed in the __depends and __base_depends variables with a .conf suffix. conffiles = [] - dep_files = self.configuration.data.getVar('__depends') or set() - dep_files.union(self.configuration.data.getVar('__base_depends') or set()) + dep_files = self.configuration.data.getVar('__base_depends') or [] + dep_files = dep_files + (self.configuration.data.getVar('__depends') or []) for f in dep_files: if f[0].endswith(".conf"): diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py index 7b9c47e6169..4293d09c7aa 100644 --- a/lib/bb/parse/__init__.py +++ b/lib/bb/parse/__init__.py @@ -73,8 +73,7 @@ def update_mtime(f): def mark_dependency(d, f): if f.startswith('./'): f = "%s/%s" % (os.getcwd(), f[2:]) - deps = d.getVar('__depends') or set() - deps.update([(f, cached_mtime(f))]) + deps = (d.getVar('__depends') or []) + [(f, cached_mtime(f))] d.setVar('__depends', deps) def supports(fn, data): @@ -134,8 +133,8 @@ def vars_from_file(mypkg, d): def get_file_depends(d): '''Return the dependent files''' dep_files = [] - depends = d.getVar('__depends', True) or set() - depends = depends.union(d.getVar('__base_depends', True) or set()) + depends = d.getVar('__base_depends', True) or [] + depends = depends + (d.getVar('__depends', True) or []) for (fn, _) in depends: dep_files.append(os.path.abspath(fn)) return " ".join(dep_files) -- 2.47.3