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>
This commit is contained in:
parent
e10bea36ac
commit
5de7744a49
|
@ -405,12 +405,12 @@ class Cache(object):
|
||||||
"""Parse the specified filename, returning the recipe information"""
|
"""Parse the specified filename, returning the recipe information"""
|
||||||
infos = []
|
infos = []
|
||||||
datastores = cls.load_bbfile(filename, appends, configdata)
|
datastores = cls.load_bbfile(filename, appends, configdata)
|
||||||
depends = set()
|
depends = []
|
||||||
for variant, data in sorted(datastores.iteritems(),
|
for variant, data in sorted(datastores.iteritems(),
|
||||||
key=lambda i: i[0],
|
key=lambda i: i[0],
|
||||||
reverse=True):
|
reverse=True):
|
||||||
virtualfn = cls.realfn2virtual(filename, variant)
|
virtualfn = cls.realfn2virtual(filename, variant)
|
||||||
depends |= (data.getVar("__depends", False) or set())
|
depends = depends + (data.getVar("__depends", False) or [])
|
||||||
if depends and not variant:
|
if depends and not variant:
|
||||||
data.setVar("__depends", depends)
|
data.setVar("__depends", depends)
|
||||||
|
|
||||||
|
|
|
@ -696,8 +696,8 @@ class BBCooker:
|
||||||
# Generate a list of parsed configuration files by searching the files
|
# Generate a list of parsed configuration files by searching the files
|
||||||
# listed in the __depends and __base_depends variables with a .conf suffix.
|
# listed in the __depends and __base_depends variables with a .conf suffix.
|
||||||
conffiles = []
|
conffiles = []
|
||||||
dep_files = self.configuration.data.getVar('__depends') or set()
|
dep_files = self.configuration.data.getVar('__base_depends') or []
|
||||||
dep_files.union(self.configuration.data.getVar('__base_depends') or set())
|
dep_files = dep_files + (self.configuration.data.getVar('__depends') or [])
|
||||||
|
|
||||||
for f in dep_files:
|
for f in dep_files:
|
||||||
if f[0].endswith(".conf"):
|
if f[0].endswith(".conf"):
|
||||||
|
|
|
@ -73,8 +73,7 @@ def update_mtime(f):
|
||||||
def mark_dependency(d, f):
|
def mark_dependency(d, f):
|
||||||
if f.startswith('./'):
|
if f.startswith('./'):
|
||||||
f = "%s/%s" % (os.getcwd(), f[2:])
|
f = "%s/%s" % (os.getcwd(), f[2:])
|
||||||
deps = d.getVar('__depends') or set()
|
deps = (d.getVar('__depends') or []) + [(f, cached_mtime(f))]
|
||||||
deps.update([(f, cached_mtime(f))])
|
|
||||||
d.setVar('__depends', deps)
|
d.setVar('__depends', deps)
|
||||||
|
|
||||||
def supports(fn, data):
|
def supports(fn, data):
|
||||||
|
@ -134,8 +133,8 @@ def vars_from_file(mypkg, d):
|
||||||
def get_file_depends(d):
|
def get_file_depends(d):
|
||||||
'''Return the dependent files'''
|
'''Return the dependent files'''
|
||||||
dep_files = []
|
dep_files = []
|
||||||
depends = d.getVar('__depends', True) or set()
|
depends = d.getVar('__base_depends', True) or []
|
||||||
depends = depends.union(d.getVar('__base_depends', True) or set())
|
depends = depends + (d.getVar('__depends', True) or [])
|
||||||
for (fn, _) in depends:
|
for (fn, _) in depends:
|
||||||
dep_files.append(os.path.abspath(fn))
|
dep_files.append(os.path.abspath(fn))
|
||||||
return " ".join(dep_files)
|
return " ".join(dep_files)
|
||||||
|
|
Loading…
Reference in New Issue