bitbake: bb: Use namedtuple for Task data

Task dependency data is becoming unwieldy with the number of indices it
contains. Convert it to use a named tuple instead, which allows members
to be indexed by a named property or an index (which allows it to retain
backward compatibility).

(Bitbake rev: bc7c44affe8e3fa94e92c3bcb8ad85bf11963779)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
Joshua Watt
2024-05-23 12:17:58 -06:00
committed by Steve Sakoman
parent bcb569e698
commit d1811356b7
2 changed files with 39 additions and 18 deletions

View File

@@ -36,6 +36,7 @@ class BBHandledException(Exception):
import os
import logging
from collections import namedtuple
class NullHandler(logging.Handler):
@@ -227,3 +228,14 @@ def deprecate_import(current, modulename, fromlist, renames = None):
setattr(sys.modules[current], newname, newobj)
TaskData = namedtuple("TaskData", [
"pn",
"taskname",
"fn",
"deps",
"provides",
"taskhash",
"unihash",
"hashfn",
"taskhash_deps",
])

View File

@@ -2452,15 +2452,17 @@ class RunQueueExecute:
taskdepdata_cache = {}
for task in self.rqdata.runtaskentries:
(mc, fn, taskname, taskfn) = split_tid_mcfn(task)
pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn]
deps = self.rqdata.runtaskentries[task].depends
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
taskhash = self.rqdata.runtaskentries[task].hash
unihash = self.rqdata.runtaskentries[task].unihash
deps = self.filtermcdeps(task, mc, deps)
hashfn = self.rqdata.dataCaches[mc].hashfn[taskfn]
taskhash_deps = self.rqdata.runtaskentries[task].taskhash_deps
taskdepdata_cache[task] = [pn, taskname, fn, deps, provides, taskhash, unihash, hashfn, taskhash_deps]
taskdepdata_cache[task] = bb.TaskData(
pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn],
taskname = taskname,
fn = fn,
deps = self.filtermcdeps(task, mc, self.rqdata.runtaskentries[task].depends),
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn],
taskhash = self.rqdata.runtaskentries[task].hash,
unihash = self.rqdata.runtaskentries[task].unihash,
hashfn = self.rqdata.dataCaches[mc].hashfn[taskfn],
taskhash_deps = self.rqdata.runtaskentries[task].taskhash_deps,
)
self.taskdepdata_cache = taskdepdata_cache
@@ -2475,9 +2477,11 @@ class RunQueueExecute:
while next:
additional = []
for revdep in next:
self.taskdepdata_cache[revdep][6] = self.rqdata.runtaskentries[revdep].unihash
self.taskdepdata_cache[revdep] = self.taskdepdata_cache[revdep]._replace(
unihash=self.rqdata.runtaskentries[revdep].unihash
)
taskdepdata[revdep] = self.taskdepdata_cache[revdep]
for revdep2 in self.taskdepdata_cache[revdep][3]:
for revdep2 in self.taskdepdata_cache[revdep].deps:
if revdep2 not in taskdepdata:
additional.append(revdep2)
next = additional
@@ -2841,14 +2845,19 @@ class RunQueueExecute:
additional = []
for revdep in next:
(mc, fn, taskname, taskfn) = split_tid_mcfn(revdep)
pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn]
deps = getsetscenedeps(revdep)
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
taskhash = self.rqdata.runtaskentries[revdep].hash
unihash = self.rqdata.runtaskentries[revdep].unihash
hashfn = self.rqdata.dataCaches[mc].hashfn[taskfn]
taskhash_deps = self.rqdata.runtaskentries[revdep].taskhash_deps
taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash, unihash, hashfn, taskhash_deps]
taskdepdata[revdep] = bb.TaskData(
pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn],
taskname = taskname,
fn = fn,
deps = deps,
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn],
taskhash = self.rqdata.runtaskentries[revdep].hash,
unihash = self.rqdata.runtaskentries[revdep].unihash,
hashfn = self.rqdata.dataCaches[mc].hashfn[taskfn],
taskhash_deps = self.rqdata.runtaskentries[revdep].taskhash_deps,
)
for revdep2 in deps:
if revdep2 not in taskdepdata:
additional.append(revdep2)