bitbake: [parser] Move more methods to the ast scheme

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Holger Freyther 2009-05-19 10:52:18 +02:00 committed by Richard Purdie
parent d84b7c5555
commit baf2395900
1 changed files with 47 additions and 30 deletions

View File

@ -208,7 +208,49 @@ class ExportFuncsNode:
else:
bb.data.setVar(var, "\t" + calledvar + "\n", data)
bb.data.setVarFlag(var, 'export_func', '1', data)
class AddTaskNode:
def __init__(self, func, before, after):
self.func = func
self.before = before
self.after = after
def eval(self, data):
var = self.func
if self.func[:3] != "do_":
var = "do_" + self.func
bb.data.setVarFlag(var, "task", 1, data)
bbtasks = bb.data.getVar('__BBTASKS', data) or []
if not var in bbtasks:
bbtasks.append(var)
bb.data.setVar('__BBTASKS', bbtasks, data)
existing = bb.data.getVarFlag(var, "deps", data) or []
if self.after is not None:
# set up deps for function
for entry in self.after.split():
if entry not in existing:
existing.append(entry)
bb.data.setVarFlag(var, "deps", existing, data)
if self.before is not None:
# set up things that depend on this func
for entry in self.before.split():
existing = bb.data.getVarFlag(entry, "deps", data) or []
if var not in existing:
bb.data.setVarFlag(entry, "deps", [var] + existing, data)
class BBHandlerNode:
def __init__(self, fns):
self.hs = __word__.findall(fns)
def eval(self, data):
bbhands = bb.data.getVar('__BBHANDLERS', data) or []
for h in self.hs:
bbhands.append(h)
bb.data.setVarFlag(h, "handler", 1, data)
bb.data.setVar('__BBHANDLERS', bbhands, data)
def handleInclude(statements, m, fn, lineno, data, force):
# AST handling
statements.append(IncludeNode(m.group(1), fn, lineno, force))
@ -248,38 +290,13 @@ def handleAddTask(statements, m, d):
after = m.group("after")
if func is None:
return
if func[:3] != "do_":
var = "do_" + func
bb.data.setVarFlag(var, "task", 1, d)
bbtasks = bb.data.getVar('__BBTASKS', d) or []
if not var in bbtasks:
bbtasks.append(var)
bb.data.setVar('__BBTASKS', bbtasks, d)
existing = bb.data.getVarFlag(var, "deps", d) or []
if after is not None:
# set up deps for function
for entry in after.split():
if entry not in existing:
existing.append(entry)
bb.data.setVarFlag(var, "deps", existing, d)
if before is not None:
# set up things that depend on this func
for entry in before.split():
existing = bb.data.getVarFlag(entry, "deps", d) or []
if var not in existing:
bb.data.setVarFlag(entry, "deps", [var] + existing, d)
statements.append(AddTaskNode(func, before, after))
statements[-1].eval(d)
def handleBBHandlers(statements, m, d):
fns = m.group(1)
hs = __word__.findall(fns)
bbhands = bb.data.getVar('__BBHANDLERS', d) or []
for h in hs:
bbhands.append(h)
bb.data.setVarFlag(h, "handler", 1, d)
bb.data.setVar('__BBHANDLERS', bbhands, d)
statements.append(BBHandlerNode(m.group(1)))
statements[-1].eval(d)
def handleInherit(statements, m, d):
files = m.group(1)