]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake: [parser] Move more stuff out the feeder
authorHolger Freyther <ich@tamarin.(none)>
Sun, 17 May 2009 13:56:40 +0000 (15:56 +0200)
committerRichard Purdie <rpurdie@linux.intel.com>
Wed, 10 Feb 2010 16:37:43 +0000 (16:37 +0000)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/parse/parse_py/ConfHandler.py

index ce746106a484d0e0a1d49a89f73a9fcbe5d78d42..b22bbc8af53f07b3f2e2ed42e8fb66922c53bdd6 100644 (file)
@@ -33,6 +33,50 @@ __include_regexp__ = re.compile( r"include\s+(.+)" )
 __require_regexp__ = re.compile( r"require\s+(.+)" )
 __export_regexp__ = re.compile( r"export\s+(.+)" )
 
+# routines for the parser, to be turned into an AST
+def handleInclude(m, fn, lineno, data, force):
+    s = bb.data.expand(m.group(1), data)
+    bb.msg.debug(3, bb.msg.domain.Parsing, "CONF %s:%d: including %s" % (fn, lineno, s))
+    include(fn, s, data, False)
+
+def handleExport(m, data):
+    bb.data.setVarFlag(m.group(1), "export", 1, data)
+
+def handleData(groupd, data):
+    key = groupd["var"]
+    if "exp" in groupd and groupd["exp"] != None:
+        bb.data.setVarFlag(key, "export", 1, data)
+    if "ques" in groupd and groupd["ques"] != None:
+        val = getFunc(groupd, key, data)
+        if val == None:
+            val = groupd["value"]
+    elif "colon" in groupd and groupd["colon"] != None:
+        e = data.createCopy()
+        bb.data.update_data(e)
+        val = bb.data.expand(groupd["value"], e)
+    elif "append" in groupd and groupd["append"] != None:
+        val = "%s %s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
+    elif "prepend" in groupd and groupd["prepend"] != None:
+        val = "%s %s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
+    elif "postdot" in groupd and groupd["postdot"] != None:
+        val = "%s%s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
+    elif "predot" in groupd and groupd["predot"] != None:
+        val = "%s%s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
+    else:
+        val = groupd["value"]
+    if 'flag' in groupd and groupd['flag'] != None:
+        bb.msg.debug(3, bb.msg.domain.Parsing, "setVarFlag(%s, %s, %s, data)" % (key, groupd['flag'], val))
+        bb.data.setVarFlag(key, groupd['flag'], val, data)
+    else:
+        bb.data.setVar(key, val, data)
+
+def getFunc(groupd, key, data):
+    if 'flag' in groupd and groupd['flag'] != None:
+        return bb.data.getVarFlag(key, groupd['flag'], data)
+    else:
+        return bb.data.getVar(key, data)
+
+
 def init(data):
     topdir = bb.data.getVar('TOPDIR', data)
     if not topdir:
@@ -110,59 +154,25 @@ def handle(fn, data, include = 0):
     return data
 
 def feeder(lineno, s, fn, data):
-    def getFunc(groupd, key, data):
-        if 'flag' in groupd and groupd['flag'] != None:
-            return bb.data.getVarFlag(key, groupd['flag'], data)
-        else:
-            return bb.data.getVar(key, data)
-
     m = __config_regexp__.match(s)
     if m:
         groupd = m.groupdict()
-        key = groupd["var"]
-        if "exp" in groupd and groupd["exp"] != None:
-            bb.data.setVarFlag(key, "export", 1, data)
-        if "ques" in groupd and groupd["ques"] != None:
-            val = getFunc(groupd, key, data)
-            if val == None:
-                val = groupd["value"]
-        elif "colon" in groupd and groupd["colon"] != None:
-            e = data.createCopy()
-            bb.data.update_data(e)
-            val = bb.data.expand(groupd["value"], e)
-        elif "append" in groupd and groupd["append"] != None:
-            val = "%s %s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
-        elif "prepend" in groupd and groupd["prepend"] != None:
-            val = "%s %s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
-        elif "postdot" in groupd and groupd["postdot"] != None:
-            val = "%s%s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
-        elif "predot" in groupd and groupd["predot"] != None:
-            val = "%s%s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
-        else:
-            val = groupd["value"]
-        if 'flag' in groupd and groupd['flag'] != None:
-            bb.msg.debug(3, bb.msg.domain.Parsing, "setVarFlag(%s, %s, %s, data)" % (key, groupd['flag'], val))
-            bb.data.setVarFlag(key, groupd['flag'], val, data)
-        else:
-            bb.data.setVar(key, val, data)
+        handleData(groupd, data)
         return
 
     m = __include_regexp__.match(s)
     if m:
-        s = bb.data.expand(m.group(1), data)
-        bb.msg.debug(3, bb.msg.domain.Parsing, "CONF %s:%d: including %s" % (fn, lineno, s))
-        include(fn, s, data, False)
+        handleInclude(m, fn, lineno, data, False)
         return
 
     m = __require_regexp__.match(s)
     if m:
-        s = bb.data.expand(m.group(1), data)
-        include(fn, s, data, "include required")
+        handleInclude(m, fn, lineno, data, True)
         return
 
     m = __export_regexp__.match(s)
     if m:
-        bb.data.setVarFlag(m.group(1), "export", 1, data)
+        handleExport(m, data)
         return
 
     raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s));