From 913e78898e65e1d95c6313e86854cdc2ab9e35aa Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sun, 17 May 2009 06:19:39 +0200 Subject: bitbake: [parse] Unify opening a file... Signed-off-by: Richard Purdie --- bitbake/lib/bb/parse/__init__.py | 19 +++++++++++++++++++ bitbake/lib/bb/parse/parse_py/BBHandler.py | 18 ++---------------- bitbake/lib/bb/parse/parse_py/ConfHandler.py | 23 ++--------------------- 3 files changed, 23 insertions(+), 37 deletions(-) (limited to 'bitbake/lib/bb/parse') diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py index 5dd96c4136..c6a925c7a8 100644 --- a/bitbake/lib/bb/parse/__init__.py +++ b/bitbake/lib/bb/parse/__init__.py @@ -80,5 +80,24 @@ def init(fn, data): if h['supports'](fn): return h['init'](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" % abs_fn) + return (f, abs_fn) + from parse_py import __version__, ConfHandler, BBHandler diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py index 7707705aaf..c6931650da 100644 --- a/bitbake/lib/bb/parse/parse_py/BBHandler.py +++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py @@ -30,7 +30,7 @@ import bb.fetch, bb.build, bb.utils from bb import data, fetch, methodpool from ConfHandler import include, init -from bb.parse import ParseError +from bb.parse import ParseError, resolve_file __func_start_regexp__ = re.compile( r"(((?Ppython)|(?Pfakeroot))\s*)*(?P[\w\.\-\+\{\}\$]+)?\s*\(\s*\)\s*{$" ) __inherit_regexp__ = re.compile( r"inherit\s+(.+)" ) @@ -145,20 +145,7 @@ def handle(fn, d, include = 0): else: oldfile = None - bbpath = (data.getVar('BBPATH', d, 1) or '').split(':') - if not os.path.isabs(fn): - f = None - 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 + (f, abs_fn) = resolve_file(fn, d) if include: bb.parse.mark_dependency(d, abs_fn) @@ -203,7 +190,6 @@ def handle(fn, d, include = 0): darray[cls] = based return darray - bbpath.pop(0) if oldfile: bb.data.setVar("FILE", oldfile, d) diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py index fcbf6aea15..ce746106a4 100644 --- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py +++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py @@ -25,7 +25,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import re, bb.data, os, sys -from bb.parse import ParseError +from bb.parse import ParseError, resolve_file #__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)$") @@ -77,10 +77,6 @@ def include(oldfn, fn, data, error_out): bb.msg.debug(2, bb.msg.domain.Parsing, "CONF file '%s' not found" % fn) def handle(fn, data, include = 0): - if include: - inc_string = "including" - else: - inc_string = "reading" init(data) if include == 0: @@ -88,22 +84,7 @@ def handle(fn, data, include = 0): else: oldfile = bb.data.getVar('FILE', data) - if not os.path.isabs(fn): - f = None - bbpath = bb.data.getVar("BBPATH", data, 1) or [] - for p in bbpath.split(":"): - currname = os.path.join(p, fn) - if os.access(currname, os.R_OK): - f = open(currname, 'r') - abs_fn = currname - bb.msg.debug(2, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string, currname)) - break - if f is None: - raise IOError("file '%s' not found" % fn) - else: - f = open(fn,'r') - bb.msg.debug(1, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string,fn)) - abs_fn = fn + (f, abs_fn) = resolve_file(fn, data) if include: bb.parse.mark_dependency(data, abs_fn) -- cgit v1.2.3-54-g00ecf