def handle(fn, d, include): global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __infunc__, __body__, __residue__ __body__ = [] __infunc__ = "" __classname__ = "" __residue__ = [] if include == 0: bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data)") else: bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data, include)") (root, ext) = os.path.splitext(os.path.basename(fn)) base_name = "%s%s" % (root,ext) init(d) if ext == ".bbclass": __classname__ = root classes.append(__classname__) __inherit_cache = data.getVar('__inherit_cache', d) or [] if not fn in __inherit_cache: __inherit_cache.append(fn) data.setVar('__inherit_cache', __inherit_cache, d) if include != 0: oldfile = data.getVar('FILE', d) else: oldfile = None 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) # DONE WITH PARSING... time to evaluate if ext != ".bbclass": data.setVar('FILE', fn, d) statements.eval(d) if ext == ".bbclass": classes.remove(__classname__) else: if include == 0: return ast.multi_finalize(fn, d) if oldfile: bb.data.setVar("FILE", oldfile, d) # we have parsed the bb class now if ext == ".bbclass" or ext == ".inc": bb.methodpool.get_parsed_dict()[base_name] = 1 return d
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = data.getVar("FILE", False) abs_fn = resolve_file(fn, data) f = open(abs_fn, "r") if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while True: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() # skip empty lines if not w: continue s = s.rstrip() while s[-1] == "\\": s2 = f.readline().strip() lineno = lineno + 1 if (not s2 or s2 and s2[0] != "#") and s[0] == "#": bb.fatal( "There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s) ) s = s[:-1] + s2 # skip comments if s[0] == "#": continue feeder(lineno, s, abs_fn, statements) # DONE WITH PARSING... time to evaluate data.setVar("FILE", abs_fn) statements.eval(data) if oldfile: data.setVar("FILE", oldfile) f.close() for f in confFilters: f(fn, data) return data
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = data.getVar('FILE', False) abs_fn = resolve_file(fn, data) f = open(abs_fn, 'r') if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while True: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() # skip empty lines if not w: continue s = s.rstrip() while s[-1] == '\\': s2 = f.readline().strip() lineno = lineno + 1 if (not s2 or s2 and s2[0] != "#") and s[0] == "#": bb.fatal( "There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s)) s = s[:-1] + s2 # skip comments if s[0] == '#': continue feeder(lineno, s, abs_fn, statements) # DONE WITH PARSING... time to evaluate data.setVar('FILE', abs_fn) statements.eval(data) if oldfile: data.setVar('FILE', oldfile) f.close() for f in confFilters: f(fn, data) return data
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = data.getVar("FILE") abs_fn = resolve_file(fn, data) f = open(abs_fn, "r") if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while True: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() if not w: continue # skip empty lines s = s.rstrip() if s[0] == "#": continue # skip comments while s[-1] == "\\": s2 = f.readline().strip() lineno = lineno + 1 s = s[:-1] + s2 feeder(lineno, s, fn, statements) # DONE WITH PARSING... time to evaluate data.setVar("FILE", abs_fn) statements.eval(data) if oldfile: data.setVar("FILE", oldfile) return data
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = data.getVar('FILE') abs_fn = resolve_file(fn, data) f = open(abs_fn, 'r') if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while True: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() if not w: continue # skip empty lines s = s.rstrip() if s[0] == '#': continue # skip comments while s[-1] == '\\': s2 = f.readline().strip() lineno = lineno + 1 s = s[:-1] + s2 feeder(lineno, s, fn, statements) # DONE WITH PARSING... time to evaluate data.setVar('FILE', abs_fn) statements.eval(data) if oldfile: data.setVar('FILE', oldfile) for f in confFilters: f(fn, data) return data
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = bb.data.getVar('FILE', data) abs_fn = resolve_file(fn, data) f = open(abs_fn, 'r') if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while 1: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() if not w: continue # skip empty lines s = s.rstrip() if s[0] == '#': continue # skip comments while s[-1] == '\\': s2 = f.readline()[:-1].strip() lineno = lineno + 1 s = s[:-1] + s2 feeder(lineno, s, fn, statements) # DONE WITH PARSING... time to evaluate bb.data.setVar('FILE', fn, data) statements.eval(data) if oldfile: bb.data.setVar('FILE', oldfile, data) return data
def handle(fn, data, include): init(data) if include == 0: oldfile = None else: oldfile = data.getVar('FILE') abs_fn = resolve_file(fn, data) f = open(abs_fn, 'r') if include: bb.parse.mark_dependency(data, abs_fn) statements = ast.StatementGroup() lineno = 0 while True: lineno = lineno + 1 s = f.readline() if not s: break w = s.strip() # skip empty lines if not w: continue s = s.rstrip() if s[0] == '#': continue # skip comments def strip_comments(_s): c1 = re.findall('\".*\"', _s) # used for check v = _s.split('#') if len(v) > 1: # we found some comments _v = v[-1] del v[-1] _s = '#'.join(v).rstrip('#') if re.findall('\".*\"', _s) != c1: # we remove the expr, roll back return '%s#%s' % (_s, _v.rstrip()) return strip_comments(_s) else: return '#'.join(v).rstrip('[# ]') s = strip_comments(s) while s[-1] == '\\': s2 = f.readline().strip() lineno = lineno + 1 if (not s2 or s2 and s2[0] != "#") and s[0] == "#" : bb.fatal("There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s)) s = s[:-1] + s2 # skip comments if s[0] == '#': continue feeder(lineno, s, fn, statements) # DONE WITH PARSING... time to evaluate data.setVar('FILE', abs_fn) statements.eval(data) if oldfile: data.setVar('FILE', oldfile) f.close() for f in confFilters: f(fn, data) return data