From 62dc8f47b3c17cf0b1a5d4bf4f0173d5d4fb4c1a Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 10 Feb 2006 10:11:32 +0000 Subject: Update bitbake to latest bitbake svn git-svn-id: https://svn.o-hand.com/repos/poky/trunk@262 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- bitbake/lib/bb/parse/__init__.py | 9 ++++++--- bitbake/lib/bb/parse/parse_py/ConfHandler.py | 19 ++++++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) (limited to 'bitbake/lib/bb/parse') diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py index b8839c09f..cb2741606 100644 --- a/bitbake/lib/bb/parse/__init__.py +++ b/bitbake/lib/bb/parse/__init__.py @@ -26,6 +26,8 @@ __all__ = [ 'ParseError', 'SkipPackage', 'cached_mtime', 'mark_dependency', 'supports', 'handle', 'init' ] handlers = [] +import bb, os + class ParseError(Exception): """Exception raised when parsing fails""" @@ -34,13 +36,14 @@ class SkipPackage(Exception): __mtime_cache = {} def cached_mtime(f): - import os if not __mtime_cache.has_key(f): - __mtime_cache[f] = os.stat(f)[8] + update_mtime(f) return __mtime_cache[f] +def update_mtime(f): + __mtime_cache[f] = os.stat(f)[8] + def mark_dependency(d, f): - import bb, os if f.startswith('./'): f = "%s/%s" % (os.getcwd(), f[2:]) deps = (bb.data.getVar('__depends', d) or "").split() diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py index 41ef96d55..90978300a 100644 --- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py +++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py @@ -28,6 +28,7 @@ from bb.parse import ParseError #__config_regexp__ = re.compile( r"(?Pexport\s*)?(?P[a-zA-Z0-9\-_+.${}]+)\s*(?P:)?(?P\?)?=\s*(?P['\"]?)(?P.*)(?P=apo)$") __config_regexp__ = re.compile( r"(?Pexport\s*)?(?P[a-zA-Z0-9\-_+.${}/]+)(\[(?P[a-zA-Z0-9\-_+.]+)\])?\s*((?P:=)|(?P\?=)|(?P\+=)|(?P=\+)|(?P=\.)|(?P\.=)|=)\s*(?P['\"]?)(?P.*)(?P=apo)$") __include_regexp__ = re.compile( r"include\s+(.+)" ) +__require_regexp__ = re.compile( r"require\s+(.+)" ) def init(data): if not bb.data.getVar('TOPDIR', data): @@ -83,7 +84,11 @@ def obtain(fn, data = bb.data.init()): return localfn -def include(oldfn, fn, data = bb.data.init()): +def include(oldfn, fn, data = bb.data.init(), error_out = False): + """ + + error_out If True a ParseError will be reaised if the to be included + """ if oldfn == fn: # prevent infinate recursion return None @@ -93,8 +98,10 @@ def include(oldfn, fn, data = bb.data.init()): from bb.parse import handle try: - ret = handle(fn, data, 1) + ret = handle(fn, data, True) except IOError: + if error_out: + raise ParseError("Could not include required file %(fn)s" % vars() ) debug(2, "CONF file '%s' not found" % fn) def handle(fn, data = bb.data.init(), include = 0): @@ -125,7 +132,7 @@ def handle(fn, data = bb.data.init(), include = 0): debug(1, "CONF %s %s" % (inc_string, currname)) break if f is None: - raise IOError("file not found") + raise IOError("file '%s' not found" % fn) else: f = open(fn,'r') debug(1, "CONF %s %s" % (inc_string,fn)) @@ -191,6 +198,12 @@ def feeder(lineno, s, fn, data = bb.data.init()): include(fn, s, data) return + m = __require_regexp__.match(s) + if m: + s = bb.data.expand(m.group(1), data) + include(fn, s, data, True) + return + raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s)); # Add us to the handlers list -- cgit v1.2.3