summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cache.py84
-rw-r--r--bitbake/lib/bb/siggen.py38
2 files changed, 15 insertions, 107 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index 801707ae72e..168a77ac0c9 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -32,8 +32,6 @@ import os
import sys
import logging
import pickle
-import lzma
-import gzip
from collections import defaultdict
import bb.utils
@@ -84,12 +82,6 @@ class RecipeInfoCommon(object):
def getvar(cls, var, metadata, expand = True):
return metadata.getVar(var, expand) or ''
-sharedcache = {}
-sharedcache['sets'] = []
-sharedcache['lists'] = []
-sharedcache['dicts'] = []
-sharedcache['strs'] = []
-sharedcache['tasks'] = {}
class CoreRecipeInfo(RecipeInfoCommon):
__slots__ = ()
@@ -148,79 +140,6 @@ class CoreRecipeInfo(RecipeInfoCommon):
self.fakerootnoenv = self.getvar('FAKEROOTNOENV', metadata)
self.extradepsfunc = self.getvar('calculate_extra_depends', metadata)
- self.tasksigdata = None
- #bb.warn(str(metadata))
-
- def process_entry(ent):
- if isinstance(ent, str):
- #for a in sharedcache['strs']:
- # if ent == a:
- # return a
- #newstr = sys.intern(ent)
- #sharedcache['strs'].append(newstr)
- #return newstr
- return sys.intern(ent)
- elif ent is None:
- return None
- elif isinstance(ent, dict):
- basekeys = set(ent.keys())
- for a in sharedcache['dicts']:
- if set(a.keys()) == basekeys:
- diff = {o : (ent[o], a[o]) for o in basekeys if ent[o] != a[o]}
- if not diff:
- return a
- newdict = {}
- for a in ent:
- newdict[process_entry(a)] = process_entry(ent[a])
- sharedcache['dicts'].append(newdict)
- return newdict
- elif isinstance(ent, list):
- for a in sharedcache['lists']:
- if ent == a:
- return a
- newlist = list()
- for a in ent:
- newlist.append(process_entry(a))
- sharedcache['lists'].append(newlist)
- return newlist
- elif isinstance(ent, set):
- for a in sharedcache['sets']:
- if ent == a:
- return a
- newset = set()
- for a in ent:
- newset.add(process_entry(a))
- sharedcache['sets'].append(newset)
- return newset
- elif isinstance(ent, bb.data_smart.DataSmart):
- next = [ent.dict]
- while next:
- new = []
- for n in next:
- for i in n:
- if n == "_data":
- new.append(n[i])
- continue
- for j in n[i]:
- n[i][j] = process_entry(n[i][j])
- next = new
- elif isinstance(ent, int) or isinstance(ent, bool) or isinstance(ent, tuple):
- return ent
- else:
- bb.warn("%s:%s" % (type(ent), str(ent)))
- return ent
-
- if filename in bb.parse.siggen.taskdeps:
- data = {}
- for task in bb.parse.siggen.taskdeps[filename]:
- d = bb.parse.siggen.get_sigtaskdata(filename, task, None, False)
- data[task] = d
- #data[task] = process_entry(d)
-
- sharedcache['tasks'][filename] = data
- #self.tasksigdata = data
- #self.tasksigdata = process_entry(metadata)
-
@classmethod
def init_cacheData(cls, cachedata):
# CacheData in Core RecipeInfo Class
@@ -256,7 +175,6 @@ class CoreRecipeInfo(RecipeInfoCommon):
cachedata.fakerootnoenv = {}
cachedata.fakerootdirs = {}
cachedata.extradepsfunc = {}
- cachedata.tasksigdatas = {}
def add_cacheData(self, cachedata, fn):
cachedata.task_deps[fn] = self.task_deps
@@ -269,8 +187,6 @@ class CoreRecipeInfo(RecipeInfoCommon):
cachedata.stamp_extrainfo[fn] = self.stamp_extrainfo
cachedata.file_checksums[fn] = self.file_checksums
- cachedata.tasksigdatas[fn] = self.tasksigdata
-
provides = [self.pn]
for provide in self.provides:
if provide not in provides:
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 4b52b7ebc9c..5ef82d7be0e 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -247,9 +247,20 @@ class SignatureGeneratorBasic(SignatureGenerator):
bb.fetch2.fetcher_parse_save()
bb.fetch2.fetcher_parse_done()
- def get_sigtaskdata(self, fn, task, referencestamp, runtime):
+ def dump_sigtask(self, fn, task, stampbase, runtime):
k = fn + "." + task
+ referencestamp = stampbase
+ if isinstance(runtime, str) and runtime.startswith("customfile"):
+ sigfile = stampbase
+ referencestamp = runtime[11:]
+ elif runtime and k in self.taskhash:
+ sigfile = stampbase + "." + task + ".sigdata" + "." + self.taskhash[k]
+ else:
+ sigfile = stampbase + "." + task + ".sigbasedata" + "." + self.basehash[k]
+
+ bb.utils.mkdirhier(os.path.dirname(sigfile))
+
data = {}
data['task'] = task
data['basewhitelist'] = self.basewhitelist
@@ -273,33 +284,14 @@ class SignatureGeneratorBasic(SignatureGenerator):
data['runtaskhashes'][dep] = self.taskhash[dep]
data['taskhash'] = self.taskhash[k]
- if runtime:
- taint = self.read_taint(fn, task, referencestamp)
- if taint:
- data['taint'] = taint
+ taint = self.read_taint(fn, task, referencestamp)
+ if taint:
+ data['taint'] = taint
if runtime and k in self.taints:
if 'nostamp:' in self.taints[k]:
data['taint'] = self.taints[k]
- return data
-
- def dump_sigtask(self, fn, task, stampbase, runtime):
-
- k = fn + "." + task
- referencestamp = stampbase
- if isinstance(runtime, str) and runtime.startswith("customfile"):
- sigfile = stampbase
- referencestamp = runtime[11:]
- elif runtime and k in self.taskhash:
- sigfile = stampbase + "." + task + ".sigdata" + "." + self.taskhash[k]
- else:
- sigfile = stampbase + "." + task + ".sigbasedata" + "." + self.basehash[k]
-
- bb.utils.mkdirhier(os.path.dirname(sigfile))
-
- data = self.get_sigtaskdata(fn, task, referencestamp, runtime)
-
computed_basehash = calc_basehash(data)
if computed_basehash != self.basehash[k]:
bb.error("Basehash mismatch %s versus %s for %s" % (computed_basehash, self.basehash[k], k))