summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-19 15:01:20 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-20 15:31:56 +0000
commit5de7744a49bc0523fd65356638457bc51e1b262f (patch)
tree17e82ea482dc038f2bd620a6b786357cbba6d6f2
parente10bea36ac0783ac8d184c2c3b3ce729f2d66b20 (diff)
downloadpoky-5de7744a49bc0523fd65356638457bc51e1b262f.tar.gz
bitbake: 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. (Bitbake rev: a44285fc4109236ab89f7aad0a1fc9220eec19b6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/cache.py4
-rw-r--r--bitbake/lib/bb/cooker.py4
-rw-r--r--bitbake/lib/bb/parse/__init__.py7
3 files changed, 7 insertions, 8 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index 619b9eec24..a3c073a59f 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -405,12 +405,12 @@ class Cache(object):
405 """Parse the specified filename, returning the recipe information""" 405 """Parse the specified filename, returning the recipe information"""
406 infos = [] 406 infos = []
407 datastores = cls.load_bbfile(filename, appends, configdata) 407 datastores = cls.load_bbfile(filename, appends, configdata)
408 depends = set() 408 depends = []
409 for variant, data in sorted(datastores.iteritems(), 409 for variant, data in sorted(datastores.iteritems(),
410 key=lambda i: i[0], 410 key=lambda i: i[0],
411 reverse=True): 411 reverse=True):
412 virtualfn = cls.realfn2virtual(filename, variant) 412 virtualfn = cls.realfn2virtual(filename, variant)
413 depends |= (data.getVar("__depends", False) or set()) 413 depends = depends + (data.getVar("__depends", False) or [])
414 if depends and not variant: 414 if depends and not variant:
415 data.setVar("__depends", depends) 415 data.setVar("__depends", depends)
416 416
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 5f88f1ff59..6b58f91c6b 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -696,8 +696,8 @@ class BBCooker:
696 # Generate a list of parsed configuration files by searching the files 696 # Generate a list of parsed configuration files by searching the files
697 # listed in the __depends and __base_depends variables with a .conf suffix. 697 # listed in the __depends and __base_depends variables with a .conf suffix.
698 conffiles = [] 698 conffiles = []
699 dep_files = self.configuration.data.getVar('__depends') or set() 699 dep_files = self.configuration.data.getVar('__base_depends') or []
700 dep_files.union(self.configuration.data.getVar('__base_depends') or set()) 700 dep_files = dep_files + (self.configuration.data.getVar('__depends') or [])
701 701
702 for f in dep_files: 702 for f in dep_files:
703 if f[0].endswith(".conf"): 703 if f[0].endswith(".conf"):
diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py
index 7b9c47e616..4293d09c7a 100644
--- a/bitbake/lib/bb/parse/__init__.py
+++ b/bitbake/lib/bb/parse/__init__.py
@@ -73,8 +73,7 @@ def update_mtime(f):
73def mark_dependency(d, f): 73def mark_dependency(d, f):
74 if f.startswith('./'): 74 if f.startswith('./'):
75 f = "%s/%s" % (os.getcwd(), f[2:]) 75 f = "%s/%s" % (os.getcwd(), f[2:])
76 deps = d.getVar('__depends') or set() 76 deps = (d.getVar('__depends') or []) + [(f, cached_mtime(f))]
77 deps.update([(f, cached_mtime(f))])
78 d.setVar('__depends', deps) 77 d.setVar('__depends', deps)
79 78
80def supports(fn, data): 79def supports(fn, data):
@@ -134,8 +133,8 @@ def vars_from_file(mypkg, d):
134def get_file_depends(d): 133def get_file_depends(d):
135 '''Return the dependent files''' 134 '''Return the dependent files'''
136 dep_files = [] 135 dep_files = []
137 depends = d.getVar('__depends', True) or set() 136 depends = d.getVar('__base_depends', True) or []
138 depends = depends.union(d.getVar('__base_depends', True) or set()) 137 depends = depends + (d.getVar('__depends', True) or [])
139 for (fn, _) in depends: 138 for (fn, _) in depends:
140 dep_files.append(os.path.abspath(fn)) 139 dep_files.append(os.path.abspath(fn))
141 return " ".join(dep_files) 140 return " ".join(dep_files)