summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew McClintock <msm@freescale.com>2011-11-23 02:04:00 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-11-23 17:49:13 +0000
commit9a2029899c946ce9aa8adbc85f2cfe7a85b92182 (patch)
treea2b91dde52655477e70d4a6cf042c30afac7ac46
parentf1eb6d3dcc10c42bb09383a87bde3afa69bc6ed9 (diff)
downloadbitbake-9a2029899c946ce9aa8adbc85f2cfe7a85b92182.tar.gz
siggen.py: sort task hash depedencies with basepath
Without this patch the tash hash dependencies can be in a order that is dependent upon directory/filesystem layout. With this change the data is sorted the same regardless. Without this the dependent hashes could be in different orders on different systems and consequently final md5 hash would differ as well even though nothing else changed. Signed-off-by: Matthew McClintock <msm@freescale.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/siggen.py25
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index 3eed66425..9231291b4 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -136,7 +136,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
k = fn + "." + task
data = dataCache.basetaskhash[k]
self.runtaskdeps[k] = []
- for dep in sorted(deps):
+ for dep in sorted(deps, key=clean_basepath):
# We only manipulate the dependencies for packages not in the whitelist
if self.twl and not self.twl.search(dataCache.pkg_fn[fn]):
# then process the actual dependencies
@@ -218,6 +218,19 @@ def dump_this_task(outfile, d):
task = "do_" + d.getVar("BB_CURRENTTASK", True)
bb.parse.siggen.dump_sigtask(fn, task, outfile, "customfile")
+def clean_basepath(a):
+ if a.startswith("virtual:"):
+ b = a.rsplit(":", 1)[0] + a.rsplit("/", 1)[1]
+ else:
+ b = a.rsplit("/", 1)[1]
+ return b
+
+def clean_basepaths(a):
+ b = {}
+ for x in a:
+ b[clean_basepath(x)] = a[x]
+ return b
+
def compare_sigfiles(a, b):
p1 = pickle.Unpickler(file(a, "rb"))
a_data = p1.load()
@@ -236,16 +249,6 @@ def compare_sigfiles(a, b):
removed = sb - sa
return changed, added, removed
- def clean_basepaths(a):
- b = {}
- for x in a:
- if x.startswith("virtual:"):
- y = x.rsplit(":", 1)[0] + x.rsplit("/", 1)[1]
- else:
- y = x.rsplit("/", 1)[1]
- b[y] = a[x]
- return b
-
if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']:
print "basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist'])
print "changed items: %s" % a_data['basewhitelist'].symmetric_difference(b_data['basewhitelist'])