bitbake: [parser] Make resolve_file only resolve the path
Do not attempt to open the file in the resolve_file method (a lot like bb.which... maybe bb.which can be used). This way we don't need to open/close a file which we have already parsed. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
parent
83ec5eaed4
commit
7b57ad901a
|
@ -82,22 +82,16 @@ def init(fn, data):
|
|||
|
||||
def resolve_file(fn, d):
|
||||
if not os.path.isabs(fn):
|
||||
f = None
|
||||
bbpath = (bb.data.getVar('BBPATH', d, 1) or '').split(':')
|
||||
for p in bbpath:
|
||||
j = os.path.join(p, fn)
|
||||
if os.access(j, os.R_OK):
|
||||
abs_fn = j
|
||||
f = open(j, 'r')
|
||||
break
|
||||
if f is None:
|
||||
raise IOError("file %s not found" % fn)
|
||||
else:
|
||||
f = open(fn,'r')
|
||||
abs_fn = fn
|
||||
bb.msg.debug(2, bb.msg.domain.Parsing, "LOAD %s" % j)
|
||||
return j
|
||||
raise IOError("file %s not found" % fn)
|
||||
|
||||
bb.msg.debug(2, bb.msg.domain.Parsing, "LOAD %s" % abs_fn)
|
||||
return (f, abs_fn)
|
||||
bb.msg.debug(2, bb.msg.domain.Parsing, "LOAD %s" % fn)
|
||||
return fn
|
||||
|
||||
# Used by OpenEmbedded metadata
|
||||
__pkgsplit_cache__={}
|
||||
|
|
|
@ -80,12 +80,13 @@ def inherit(files, d):
|
|||
include(fn, file, d, "inherit")
|
||||
__inherit_cache = data.getVar('__inherit_cache', d) or []
|
||||
|
||||
def get_statements(filename, absolsute_filename, base_name, file):
|
||||
def get_statements(filename, absolsute_filename, base_name):
|
||||
global cached_statements
|
||||
|
||||
try:
|
||||
return cached_statements[absolsute_filename]
|
||||
except KeyError:
|
||||
file = open(absolsute_filename, 'r')
|
||||
statements = ast.StatementGroup()
|
||||
|
||||
lineno = 0
|
||||
|
@ -133,13 +134,13 @@ def handle(fn, d, include):
|
|||
else:
|
||||
oldfile = None
|
||||
|
||||
(f, abs_fn) = resolve_file(fn, d)
|
||||
abs_fn = resolve_file(fn, d)
|
||||
|
||||
if include:
|
||||
bb.parse.mark_dependency(d, abs_fn)
|
||||
|
||||
# actual loading
|
||||
statements = get_statements(fn, abs_fn, base_name, f)
|
||||
statements = get_statements(fn, abs_fn, base_name)
|
||||
|
||||
# DONE WITH PARSING... time to evaluate
|
||||
if ext != ".bbclass":
|
||||
|
|
|
@ -84,7 +84,8 @@ def handle(fn, data, include):
|
|||
else:
|
||||
oldfile = bb.data.getVar('FILE', data)
|
||||
|
||||
(f, abs_fn) = resolve_file(fn, data)
|
||||
abs_fn = resolve_file(fn, data)
|
||||
f = open(abs_fn, 'r')
|
||||
|
||||
if include:
|
||||
bb.parse.mark_dependency(data, abs_fn)
|
||||
|
|
Loading…
Reference in New Issue