summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorHolger Freyther <ich@tamarin.(none)>2009-05-18 19:56:36 +0200
committerRichard Purdie <rpurdie@linux.intel.com>2010-02-15 17:06:55 +0000
commit4320386deb54866d643edeb29dd9567821f1cb26 (patch)
treea7c9f68d17fe85b2ccd85553e30e82eef3d469f4 /bitbake
parent4b25b519ae46b283988a1847e56a19b01269b3a4 (diff)
downloadpoky-4320386deb54866d643edeb29dd9567821f1cb26.tar.gz
bitbake: [parser] Move the finalise into the ast as well
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/parse/ast.py39
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py45
2 files changed, 41 insertions, 43 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 8e7ba7fde8..f21b0aeb45 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -197,3 +197,42 @@ def handleInherit(statements, m, d):
197 n = __word__.findall(files) 197 n = __word__.findall(files)
198 bb.parse.BBHandler.inherit(statements, n, d) 198 bb.parse.BBHandler.inherit(statements, n, d)
199 199
200def finalise(fn, d):
201 bb.data.expandKeys(d)
202 bb.data.update_data(d)
203 anonqueue = bb.data.getVar("__anonqueue", d, 1) or []
204 body = [x['content'] for x in anonqueue]
205 flag = { 'python' : 1, 'func' : 1 }
206 bb.data.setVar("__anonfunc", "\n".join(body), d)
207 bb.data.setVarFlags("__anonfunc", flag, d)
208 from bb import build
209 try:
210 t = bb.data.getVar('T', d)
211 bb.data.setVar('T', '${TMPDIR}/anonfunc/', d)
212 anonfuncs = bb.data.getVar('__BBANONFUNCS', d) or []
213 code = ""
214 for f in anonfuncs:
215 code = code + " %s(d)\n" % f
216 bb.data.setVar("__anonfunc", code, d)
217 build.exec_func("__anonfunc", d)
218 bb.data.delVar('T', d)
219 if t:
220 bb.data.setVar('T', t, d)
221 except Exception, e:
222 bb.msg.debug(1, bb.msg.domain.Parsing, "Exception when executing anonymous function: %s" % e)
223 raise
224 bb.data.delVar("__anonqueue", d)
225 bb.data.delVar("__anonfunc", d)
226 bb.data.update_data(d)
227
228 all_handlers = {}
229 for var in bb.data.getVar('__BBHANDLERS', d) or []:
230 # try to add the handler
231 handler = bb.data.getVar(var,d)
232 bb.event.register(var, handler)
233
234 tasklist = bb.data.getVar('__BBTASKS', d) or []
235 bb.build.add_tasks(tasklist, d)
236
237 bb.event.fire(bb.event.RecipeParsed(fn), d)
238
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py
index 46413c5dc3..bb868d1c57 100644
--- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -75,47 +75,6 @@ def inherit(statements, files, d):
75 include(statements, fn, file, d, "inherit") 75 include(statements, fn, file, d, "inherit")
76 __inherit_cache = data.getVar('__inherit_cache', d) or [] 76 __inherit_cache = data.getVar('__inherit_cache', d) or []
77 77
78
79def finalise(fn, d):
80 data.expandKeys(d)
81 data.update_data(d)
82 anonqueue = data.getVar("__anonqueue", d, 1) or []
83 body = [x['content'] for x in anonqueue]
84 flag = { 'python' : 1, 'func' : 1 }
85 data.setVar("__anonfunc", "\n".join(body), d)
86 data.setVarFlags("__anonfunc", flag, d)
87 from bb import build
88 try:
89 t = data.getVar('T', d)
90 data.setVar('T', '${TMPDIR}/anonfunc/', d)
91 anonfuncs = data.getVar('__BBANONFUNCS', d) or []
92 code = ""
93 for f in anonfuncs:
94 code = code + " %s(d)\n" % f
95 data.setVar("__anonfunc", code, d)
96 build.exec_func("__anonfunc", d)
97 data.delVar('T', d)
98 if t:
99 data.setVar('T', t, d)
100 except Exception, e:
101 bb.msg.debug(1, bb.msg.domain.Parsing, "Exception when executing anonymous function: %s" % e)
102 raise
103 data.delVar("__anonqueue", d)
104 data.delVar("__anonfunc", d)
105 data.update_data(d)
106
107 all_handlers = {}
108 for var in data.getVar('__BBHANDLERS', d) or []:
109 # try to add the handler
110 handler = data.getVar(var,d)
111 bb.event.register(var, handler)
112
113 tasklist = data.getVar('__BBTASKS', d) or []
114 bb.build.add_tasks(tasklist, d)
115
116 bb.event.fire(bb.event.RecipeParsed(fn), d)
117
118
119def handle(fn, d, include, statements): 78def handle(fn, d, include, statements):
120 global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __infunc__, __body__, __residue__ 79 global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __infunc__, __body__, __residue__
121 __body__ = [] 80 __body__ = []
@@ -174,7 +133,7 @@ def handle(fn, d, include, statements):
174 else: 133 else:
175 based = d 134 based = d
176 try: 135 try:
177 finalise(fn, based) 136 ast.finalise(fn, based)
178 except bb.parse.SkipPackage: 137 except bb.parse.SkipPackage:
179 bb.data.setVar("__SKIPPED", True, based) 138 bb.data.setVar("__SKIPPED", True, based)
180 darray = {"": based} 139 darray = {"": based}
@@ -185,7 +144,7 @@ def handle(fn, d, include, statements):
185 data.setVar('PN', pn + '-' + cls, based) 144 data.setVar('PN', pn + '-' + cls, based)
186 inherit(statements, [cls], based) 145 inherit(statements, [cls], based)
187 try: 146 try:
188 finalise(fn, based) 147 ast.finalise(fn, based)
189 except bb.parse.SkipPackage: 148 except bb.parse.SkipPackage:
190 bb.data.setVar("__SKIPPED", True, based) 149 bb.data.setVar("__SKIPPED", True, based)
191 darray[cls] = based 150 darray[cls] = based