Hey Joshua,

This is breaking multiconfig builds with the following error (trimmed), I believe it is not taking into account that the Key could contain "mc:..." if it is a multiconfig build.


ERROR: Running idle function
 File "poky/bitbake/lib/bb/runqueue.py", line 1170, in RunQueueData.prepare_task_hash(tid='multiconfig:x86:poky/meta/recipes-support/attr/acl_2.2.52.bb:do_fetch'):              self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(taskfn, taskname, procdep, self.dataCaches[mc])     >        self.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(fn + "." + taskname)

  File "poky/bitbake/lib/bb/siggen.py", line 45, in SignatureGeneratorOEBasicHash.get_unihash(task='poky/meta/recipes-support/attr/acl_2.2.52.bb.do_fetch'):
         def get_unihash(self, task):
    >        return self.taskhash[task]

KeyError: 'poky/meta/recipes-support/attr/acl_2.2.52.bb.do_fetch'


Cheers,

Alejandro


On 12/18/2018 7:10 PM, Joshua Watt wrote:
Requests the task unique hash from siggen and tracks it

[YOCTO #13030]

Signed-off-by: Joshua Watt <[email protected]>
---
  bitbake/lib/bb/runqueue.py | 25 +++++++++++++++++--------
  1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index f2b95a9829b..27b188256dd 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -346,6 +346,7 @@ class RunTaskEntry(object):
          self.depends = set()
          self.revdeps = set()
          self.hash = None
+        self.unihash = None
          self.task = None
          self.weight = 1
@@ -385,6 +386,9 @@ class RunQueueData:
      def get_task_hash(self, tid):
          return self.runtaskentries[tid].hash
+ def get_task_unihash(self, tid):
+        return self.runtaskentries[tid].unihash
+
      def get_user_idstring(self, tid, task_name_suffix = ""):
          return tid + task_name_suffix
@@ -1150,18 +1154,21 @@ class RunQueueData:
                  if len(self.runtaskentries[tid].depends - dealtwith) == 0:
                      dealtwith.add(tid)
                      todeal.remove(tid)
-                    procdep = []
-                    for dep in self.runtaskentries[tid].depends:
-                        procdep.append(fn_from_tid(dep) + "." + 
taskname_from_tid(dep))
-                    (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
-                    self.runtaskentries[tid].hash = 
bb.parse.siggen.get_taskhash(taskfn, taskname, procdep, self.dataCaches[mc])
-                    task = self.runtaskentries[tid].task
+                    self.prepare_task_hash(tid)
bb.parse.siggen.writeout_file_checksum_cache() #self.dump_data()
          return len(self.runtaskentries)
+ def prepare_task_hash(self, tid):
+        procdep = []
+        for dep in self.runtaskentries[tid].depends:
+            procdep.append(fn_from_tid(dep) + "." + taskname_from_tid(dep))
+        (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+        self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(taskfn, 
taskname, procdep, self.dataCaches[mc])
+        self.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(fn + 
"." + taskname)
+
      def dump_data(self):
          """
          Dump some debug information on the internal data structures
@@ -2081,7 +2088,8 @@ class RunQueueExecuteTasks(RunQueueExecute):
                  deps = self.rqdata.runtaskentries[revdep].depends
                  provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
                  taskhash = self.rqdata.runtaskentries[revdep].hash
-                taskdepdata[revdep] = [pn, taskname, fn, deps, provides, 
taskhash]
+                unihash = self.rqdata.runtaskentries[revdep].unihash
+                taskdepdata[revdep] = [pn, taskname, fn, deps, provides, 
taskhash, unihash]
                  for revdep2 in deps:
                      if revdep2 not in taskdepdata:
                          additional.append(revdep2)
@@ -2524,7 +2532,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
                  deps = getsetscenedeps(revdep)
                  provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
                  taskhash = self.rqdata.runtaskentries[revdep].hash
-                taskdepdata[revdep] = [pn, taskname, fn, deps, provides, 
taskhash]
+                unihash = self.rqdata.runtaskentries[revdep].unihash
+                taskdepdata[revdep] = [pn, taskname, fn, deps, provides, 
taskhash, unihash]
                  for revdep2 in deps:
                      if revdep2 not in taskdepdata:
                          additional.append(revdep2)
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to