diff options
Diffstat (limited to 'bitbake/lib/bb/cache.py')
-rw-r--r-- | bitbake/lib/bb/cache.py | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index 4e08c100ab..fcb15796cc 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py | |||
@@ -284,36 +284,15 @@ def parse_recipe(bb_data, bbfile, appends, mc=''): | |||
284 | Parse a recipe | 284 | Parse a recipe |
285 | """ | 285 | """ |
286 | 286 | ||
287 | chdir_back = False | ||
288 | |||
289 | bb_data.setVar("__BBMULTICONFIG", mc) | 287 | bb_data.setVar("__BBMULTICONFIG", mc) |
290 | 288 | ||
291 | # expand tmpdir to include this topdir | ||
292 | bb_data.setVar('TMPDIR', bb_data.getVar('TMPDIR') or "") | ||
293 | bbfile_loc = os.path.abspath(os.path.dirname(bbfile)) | 289 | bbfile_loc = os.path.abspath(os.path.dirname(bbfile)) |
294 | oldpath = os.path.abspath(os.getcwd()) | ||
295 | bb.parse.cached_mtime_noerror(bbfile_loc) | 290 | bb.parse.cached_mtime_noerror(bbfile_loc) |
296 | 291 | ||
297 | # The ConfHandler first looks if there is a TOPDIR and if not | 292 | if appends: |
298 | # then it would call getcwd(). | 293 | bb_data.setVar('__BBAPPEND', " ".join(appends)) |
299 | # Previously, we chdir()ed to bbfile_loc, called the handler | 294 | bb_data = bb.parse.handle(bbfile, bb_data) |
300 | # and finally chdir()ed back, a couple of thousand times. We now | 295 | return bb_data |
301 | # just fill in TOPDIR to point to bbfile_loc if there is no TOPDIR yet. | ||
302 | if not bb_data.getVar('TOPDIR', False): | ||
303 | chdir_back = True | ||
304 | bb_data.setVar('TOPDIR', bbfile_loc) | ||
305 | try: | ||
306 | if appends: | ||
307 | bb_data.setVar('__BBAPPEND', " ".join(appends)) | ||
308 | bb_data = bb.parse.handle(bbfile, bb_data) | ||
309 | if chdir_back: | ||
310 | os.chdir(oldpath) | ||
311 | return bb_data | ||
312 | except: | ||
313 | if chdir_back: | ||
314 | os.chdir(oldpath) | ||
315 | raise | ||
316 | |||
317 | 296 | ||
318 | 297 | ||
319 | class NoCache(object): | 298 | class NoCache(object): |