summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/parse
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-11-16 15:02:15 +0000
committerRichard Purdie <richard@openedhand.com>2006-11-16 15:02:15 +0000
commit306b7c7a9757ead077363074e7bbac2e5c03e7c5 (patch)
tree6935017a9af749c46816881c86258f514384ba1c /bitbake/lib/bb/parse
parent65930a38e415ae4a0182e1cea1be838e0ada50ee (diff)
downloadpoky-306b7c7a9757ead077363074e7bbac2e5c03e7c5.tar.gz
bitbake: Upgrade from 1.4 -> 1.7.4ish
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@863 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake/lib/bb/parse')
-rw-r--r--bitbake/lib/bb/parse/__init__.py11
-rw-r--r--bitbake/lib/bb/parse/parse_c/BBHandler.py151
-rw-r--r--bitbake/lib/bb/parse/parse_c/Makefile16
-rw-r--r--bitbake/lib/bb/parse/parse_c/bitbakec.pyx205
-rw-r--r--bitbake/lib/bb/parse/parse_c/bitbakeparser.cc144
-rw-r--r--bitbake/lib/bb/parse/parse_c/bitbakescanner.cc218
-rw-r--r--bitbake/lib/bb/parse/parse_c/bitbakescanner.l30
-rw-r--r--bitbake/lib/bb/parse/parse_c/lexer.h8
-rw-r--r--bitbake/lib/bb/parse/parse_c/lexerc.h2
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py28
-rw-r--r--bitbake/lib/bb/parse/parse_py/ConfHandler.py33
11 files changed, 510 insertions, 336 deletions
diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py
index 58e17d154a..70fdba03b4 100644
--- a/bitbake/lib/bb/parse/__init__.py
+++ b/bitbake/lib/bb/parse/__init__.py
@@ -37,11 +37,16 @@ class SkipPackage(Exception):
37__mtime_cache = {} 37__mtime_cache = {}
38def cached_mtime(f): 38def cached_mtime(f):
39 if not __mtime_cache.has_key(f): 39 if not __mtime_cache.has_key(f):
40 update_mtime(f) 40 __mtime_cache[f] = os.stat(f)[8]
41 return __mtime_cache[f] 41 return __mtime_cache[f]
42 42
43def update_mtime(f): 43def cached_mtime_noerror(f):
44 __mtime_cache[f] = os.stat(f)[8] 44 if not __mtime_cache.has_key(f):
45 try:
46 __mtime_cache[f] = os.stat(f)[8]
47 except OSError:
48 return 0
49 return __mtime_cache[f]
45 50
46def mark_dependency(d, f): 51def mark_dependency(d, f):
47 if f.startswith('./'): 52 if f.startswith('./'):
diff --git a/bitbake/lib/bb/parse/parse_c/BBHandler.py b/bitbake/lib/bb/parse/parse_c/BBHandler.py
index d9f48db17b..b430e1f4e5 100644
--- a/bitbake/lib/bb/parse/parse_c/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_c/BBHandler.py
@@ -5,33 +5,33 @@
5 Reads a .bb file and obtains its metadata (using a C++ parser) 5 Reads a .bb file and obtains its metadata (using a C++ parser)
6 6
7 Copyright (C) 2006 Tim Robert Ansell 7 Copyright (C) 2006 Tim Robert Ansell
8 Copyright (C) 2006 Holger Hans Peter Freyther 8 Copyright (C) 2006 Holger Hans Peter Freyther
9 9
10 This program is free software; you can redistribute it and/or modify it under 10 This program is free software; you can redistribute it and/or modify it under
11 the terms of the GNU General Public License as published by the Free Software 11 the terms of the GNU General Public License as published by the Free Software
12 Foundation; either version 2 of the License, or (at your option) any later 12 Foundation; either version 2 of the License, or (at your option) any later
13 version. 13 version.
14 14
15 Permission is hereby granted, free of charge, to any person obtaining a copy 15 Permission is hereby granted, free of charge, to any person obtaining a copy
16 of this software and associated documentation files (the "Software"), to deal 16 of this software and associated documentation files (the "Software"), to deal
17 in the Software without restriction, including without limitation the rights 17 in the Software without restriction, including without limitation the rights
18 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 18 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 copies of the Software, and to permit persons to whom the Software is 19 copies of the Software, and to permit persons to whom the Software is
20 furnished to do so, subject to the following conditions: 20 furnished to do so, subject to the following conditions:
21 21
22 The above copyright notice and this permission notice shall be included in all 22 The above copyright notice and this permission notice shall be included in all
23 copies or substantial portions of the Software. 23 copies or substantial portions of the Software.
24 24
25 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 27 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
28 SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 28 SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
29 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 29 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
30 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR 30 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
31 THE USE OR OTHER DEALINGS IN THE SOFTWARE. 31 THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32""" 32"""
33 33
34import os 34import os, sys
35 35
36# The Module we will use here 36# The Module we will use here
37import bb 37import bb
@@ -61,51 +61,126 @@ def supports(fn, data):
61 return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc" or fn[-5:] == ".conf" 61 return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc" or fn[-5:] == ".conf"
62 62
63def init(fn, data): 63def init(fn, data):
64 if not data.getVar('TOPDIR'): 64 if not bb.data.getVar('TOPDIR', data):
65 bb.error('TOPDIR is not set') 65 bb.data.setVar('TOPDIR', os.getcwd(), data)
66 if not data.getVar('BBPATH'): 66 if not bb.data.getVar('BBPATH', data):
67 bb.error('BBPATH is not set') 67 bb.data.setVar('BBPATH', os.path.join(sys.prefix, 'share', 'bitbake'), data)
68
69def handle_inherit(d):
70 """
71 Handle inheriting of classes. This will load all default classes.
72 It could be faster, it could detect infinite loops but this is todo
73 Also this delayed loading of bb.parse could impose a penalty
74 """
75 from bb.parse import handle
76
77 files = (data.getVar('INHERIT', d, True) or "").split()
78 if not "base" in i:
79 files[0:0] = ["base"]
80
81 __inherit_cache = data.getVar('__inherit_cache', d) or []
82 for f in files:
83 file = data.expand(f, d)
84 if file[0] != "/" and file[-8:] != ".bbclass":
85 file = os.path.join('classes', '%s.bbclass' % file)
86
87 if not file in __inherit_cache:
88 debug(2, "BB %s:%d: inheriting %s" % (fn, lineno, file))
89 __inherit_cache.append( file )
90
91 try:
92 handle(file, d, True)
93 except IOError:
94 print "Failed to inherit %s" % file
95 data.setVar('__inherit_cache', __inherit_cache, d)
68 96
69 97
70def handle(fn, d, include): 98def handle(fn, d, include):
71 print "" 99 from bb import data, parse
72 print "fn: %s" % fn 100
73 print "data: %s" % d 101 (root, ext) = os.path.splitext(os.path.basename(fn))
74 print dir(d) 102 base_name = "%s%s" % (root,ext)
75 print d.getVar.__doc__ 103
76 print "include: %s" % include 104 # initialize with some data
105 init(fn,d)
77 106
78 # check if we include or are the beginning 107 # check if we include or are the beginning
108 oldfile = None
79 if include: 109 if include:
80 oldfile = d.getVar('FILE') 110 oldfile = d.getVar('FILE', False)
81 else: 111 is_conf = False
82 #d.inheritFromOS() 112 elif ext == ".conf":
83 oldfile = None 113 is_conf = True
114 data.inheritFromOS(d)
84 115
85 # find the file 116 # find the file
86 if not os.path.isabs(fn): 117 if not os.path.isabs(fn):
87 bb.error("No Absolute FILE name") 118 abs_fn = bb.which(d.getVar('BBPATH', True), fn)
88 abs_fn = bb.which(d.getVar('BBPATH'), fn)
89 else: 119 else:
90 abs_fn = fn 120 abs_fn = fn
91 121
92 # check if the file exists 122 # check if the file exists
93 if not os.path.exists(abs_fn): 123 if not os.path.exists(abs_fn):
94 raise IOError("file '%(fn)' not found" % locals() ) 124 raise IOError("file '%(fn)s' not found" % locals() )
95 125
96 # now we know the file is around mark it as dep 126 # now we know the file is around mark it as dep
97 if include: 127 if include:
98 parse.mark_dependency(d, abs_fn) 128 parse.mark_dependency(d, abs_fn)
99 129
130 # manipulate the bbpath
131 if ext != ".bbclass" and ext != ".conf":
132 old_bb_path = data.getVar('BBPATH', d)
133 data.setVar('BBPATH', os.path.dirname(abs_fn) + (":%s" %old_bb_path) , d)
134
135 # handle INHERITS and base inherit
136 if ext != ".bbclass" and ext != ".conf":
137 data.setVar('FILE', fn, d)
138 handle_interit(d)
139
100 # now parse this file - by defering it to C++ 140 # now parse this file - by defering it to C++
101 parsefile(fn, d) 141 parsefile(abs_fn, d, is_conf)
142
143 # Finish it up
144 if include == 0:
145 data.expandKeys(d)
146 data.update_data(d)
147 #### !!! XXX Finish it up by executing the anonfunc
148
102 149
103 # restore the original FILE 150 # restore the original FILE
104 if oldfile: 151 if oldfile:
105 d.setVar('FILE', oldfile) 152 d.setVar('FILE', oldfile)
106 153
154 # restore bbpath
155 if ext != ".bbclass" and ext != ".conf":
156 data.setVar('BBPATH', old_bb_path, d )
157
158
107 return d 159 return d
108 160
161
162# Needed for BitBake files...
163__pkgsplit_cache__={}
164def vars_from_file(mypkg, d):
165 if not mypkg:
166 return (None, None, None)
167 if mypkg in __pkgsplit_cache__:
168 return __pkgsplit_cache__[mypkg]
169
170 myfile = os.path.splitext(os.path.basename(mypkg))
171 parts = myfile[0].split('_')
172 __pkgsplit_cache__[mypkg] = parts
173 exp = 3 - len(parts)
174 tmplist = []
175 while exp != 0:
176 exp -= 1
177 tmplist.append(None)
178 parts.extend(tmplist)
179 return parts
180
181
182
183
109# Inform bitbake that we are a parser 184# Inform bitbake that we are a parser
110# We need to define all three 185# We need to define all three
111from bb.parse import handlers 186from bb.parse import handlers
diff --git a/bitbake/lib/bb/parse/parse_c/Makefile b/bitbake/lib/bb/parse/parse_c/Makefile
index 9eb7ce9d08..77daccb72d 100644
--- a/bitbake/lib/bb/parse/parse_c/Makefile
+++ b/bitbake/lib/bb/parse/parse_c/Makefile
@@ -1,6 +1,6 @@
1 1
2test: bitbakec.so 2buil: bitbakec.so
3 python test.py 3 echo "Done"
4 4
5bitbakescanner.cc: bitbakescanner.l 5bitbakescanner.cc: bitbakescanner.l
6 flex -t bitbakescanner.l > bitbakescanner.cc 6 flex -t bitbakescanner.l > bitbakescanner.cc
@@ -28,9 +28,9 @@ bitbakec.so: bitbakec.o bitbakeparser.o bitbakescanner.o
28 g++ -shared -fPIC bitbakeparser.o bitbakescanner.o bitbakec.o -o bitbakec.so 28 g++ -shared -fPIC bitbakeparser.o bitbakescanner.o bitbakec.o -o bitbakec.so
29 29
30clean: 30clean:
31 rm *.out 31 rm -f *.out
32 rm *.cc 32 rm -f *.cc
33 rm bitbakec.c 33 rm -f bitbakec.c
34 rm bitbakec-processed.c 34 rm -f bitbakec-processed.c
35 rm *.o 35 rm -f *.o
36 rm *.so 36 rm -f *.so
diff --git a/bitbake/lib/bb/parse/parse_c/bitbakec.pyx b/bitbake/lib/bb/parse/parse_c/bitbakec.pyx
index 362cc2021e..c666e9b6b1 100644
--- a/bitbake/lib/bb/parse/parse_c/bitbakec.pyx
+++ b/bitbake/lib/bb/parse/parse_c/bitbakec.pyx
@@ -6,96 +6,107 @@ cdef extern from "stdio.h":
6 FILE *fopen(char*, char*) 6 FILE *fopen(char*, char*)
7 int fclose(FILE *fp) 7 int fclose(FILE *fp)
8 8
9cdef extern from "string.h":
10 int strlen(char*)
9 11
10cdef extern from "lexerc.h": 12cdef extern from "lexerc.h":
11 ctypedef struct lex_t: 13 ctypedef struct lex_t:
12 void* parser 14 void* parser
13 void* scanner 15 void* scanner
16 char* name
14 FILE* file 17 FILE* file
18 int config
15 void* data 19 void* data
16 20
17 int lineError 21 int lineError
18 int errorParse 22 int errorParse
19 23
20 cdef extern void parse(FILE*, object) 24 cdef extern int parse(FILE*, char*, object, int)
21 25
22def parsefile(object file, object data): 26def parsefile(object file, object data, object config):
23 print "parsefile: 1", file, data 27 #print "parsefile: 1", file, data
24 28
25 # Open the file 29 # Open the file
26 cdef FILE* f 30 cdef FILE* f
27 31
28 f = fopen(file, "r") 32 f = fopen(file, "r")
29 print "parsefile: 2 opening file" 33 #print "parsefile: 2 opening file"
30 if (f == NULL): 34 if (f == NULL):
31 raise IOError("No such file %s." % file) 35 raise IOError("No such file %s." % file)
32 36
33 print "parsefile: 3 parse" 37 #print "parsefile: 3 parse"
34 parse(f, data) 38 parse(f, file, data, config)
35 39
36 # Close the file 40 # Close the file
37 print "parsefile: 4 closing"
38 fclose(f) 41 fclose(f)
39 42
40 43
41cdef public void e_assign(lex_t* container, char* key, char* what): 44cdef public void e_assign(lex_t* container, char* key, char* what):
42 print "e_assign", key, what 45 #print "e_assign", key, what
46 if what == NULL:
47 print "FUTURE Warning empty string: use \"\""
48 what = ""
49
43 d = <object>container.data 50 d = <object>container.data
44 d.setVar(key, what) 51 d.setVar(key, what)
45 52
46cdef public void e_export(lex_t* c, char* what): 53cdef public void e_export(lex_t* c, char* what):
47 print "e_export", what 54 #print "e_export", what
48 #exp: 55 #exp:
49 # bb.data.setVarFlag(key, "export", 1, data) 56 # bb.data.setVarFlag(key, "export", 1, data)
50 d = <object>container.data 57 d = <object>c.data
51 d.setVarFlag(key, "export", 1) 58 d.setVarFlag(what, "export", 1)
52 59
53cdef public void e_immediate(lex_t* c, char* key, char* what): 60cdef public void e_immediate(lex_t* c, char* key, char* what):
54 print "e_immediate", key, what 61 #print "e_immediate", key, what
55 #colon: 62 #colon:
56 # val = bb.data.expand(groupd["value"], data) 63 # val = bb.data.expand(groupd["value"], data)
57 d = <object>c.data 64 d = <object>c.data
58 d.setVar(key, d.expand(what)) 65 d.setVar(key, d.expand(what,d))
59 66
60cdef public void e_cond(lex_t* c, char* key, char* what): 67cdef public void e_cond(lex_t* c, char* key, char* what):
61 print "e_cond", key, what 68 #print "e_cond", key, what
62 #ques: 69 #ques:
63 # val = bb.data.getVar(key, data) 70 # val = bb.data.getVar(key, data)
64 # if val == None: 71 # if val == None:
65 # val = groupd["value"] 72 # val = groupd["value"]
73 if what == NULL:
74 print "FUTURE warning: Use \"\" for", key
75 what = ""
76
66 d = <object>c.data 77 d = <object>c.data
67 d.setVar(key, (d.getVar(key) or what)) 78 d.setVar(key, (d.getVar(key,False) or what))
68 79
69cdef public void e_prepend(lex_t* c, char* key, char* what): 80cdef public void e_prepend(lex_t* c, char* key, char* what):
70 print "e_prepend", key, what 81 #print "e_prepend", key, what
71 #prepend: 82 #prepend:
72 # val = "%s %s" % (groupd["value"], (bb.data.getVar(key, data) or "")) 83 # val = "%s %s" % (groupd["value"], (bb.data.getVar(key, data) or ""))
73 d = <object>c.data 84 d = <object>c.data
74 d.setVar(key, what + " " + (d.getVar(key) or "")) 85 d.setVar(key, what + " " + (d.getVar(key,0) or ""))
75 86
76cdef public void e_append(lex_t* c, char* key, char* what): 87cdef public void e_append(lex_t* c, char* key, char* what):
77 print "e_append", key, what 88 #print "e_append", key, what
78 #append: 89 #append:
79 # val = "%s %s" % ((bb.data.getVar(key, data) or ""), groupd["value"]) 90 # val = "%s %s" % ((bb.data.getVar(key, data) or ""), groupd["value"])
80 d = <object>c.data 91 d = <object>c.data
81 d.setVar(key, (d.getVar(key) or "") + " " + what) 92 d.setVar(key, (d.getVar(key,0) or "") + " " + what)
82 93
83cdef public void e_precat(lex_t* c, char* key, char* what): 94cdef public void e_precat(lex_t* c, char* key, char* what):
84 print "e_precat", key, what 95 #print "e_precat", key, what
85 #predot: 96 #predot:
86 # val = "%s%s" % (groupd["value"], (bb.data.getVar(key, data) or "")) 97 # val = "%s%s" % (groupd["value"], (bb.data.getVar(key, data) or ""))
87 d = <object>c.data 98 d = <object>c.data
88 d.setVar(key, what + (d.getVar(key) or "")) 99 d.setVar(key, what + (d.getVar(key,0) or ""))
89 100
90cdef public void e_postcat(lex_t* c, char* key, char* what): 101cdef public void e_postcat(lex_t* c, char* key, char* what):
91 print "e_postcat", key, what 102 #print "e_postcat", key, what
92 #postdot: 103 #postdot:
93 # val = "%s%s" % ((bb.data.getVar(key, data) or ""), groupd["value"]) 104 # val = "%s%s" % ((bb.data.getVar(key, data) or ""), groupd["value"])
94 d = <object>c.data 105 d = <object>c.data
95 d.setVar(key, (d.getVar(key) or "") + what) 106 d.setVar(key, (d.getVar(key,0) or "") + what)
96 107
97cdef public void e_addtask(lex_t* c, char* name, char* before, char* after): 108cdef public int e_addtask(lex_t* c, char* name, char* before, char* after) except -1:
98 print "e_addtask", name, before, after 109 #print "e_addtask", name
99 # func = m.group("func") 110 # func = m.group("func")
100 # before = m.group("before") 111 # before = m.group("before")
101 # after = m.group("after") 112 # after = m.group("after")
@@ -112,69 +123,131 @@ cdef public void e_addtask(lex_t* c, char* name, char* before, char* after):
112 # # set up things that depend on this func 123 # # set up things that depend on this func
113 # data.setVarFlag(var, "postdeps", before.split(), d) 124 # data.setVarFlag(var, "postdeps", before.split(), d)
114 # return 125 # return
115 126
116 do = "do_%s" % name 127 if c.config == 1:
128 from bb.parse import ParseError
129 raise ParseError("No tasks allowed in config files")
130 return -1
131
117 d = <object>c.data 132 d = <object>c.data
133 do = "do_%s" % name
118 d.setVarFlag(do, "task", 1) 134 d.setVarFlag(do, "task", 1)
119 135
120 if strlen(before) > 0: 136 if before != NULL and strlen(before) > 0:
137 #print "Before", before
138 d.setVarFlag(do, "postdeps", ("%s" % before).split())
139 if after != NULL and strlen(after) > 0:
140 #print "After", after
121 d.setVarFlag(do, "deps", ("%s" % after).split()) 141 d.setVarFlag(do, "deps", ("%s" % after).split())
122 if strlen(after) > 0:
123 d.setVarFlag(do, "deps", ("%s" % before).split())
124 142
143 return 0
125 144
126cdef public void e_addhandler(lex_t* c, char* h): 145cdef public int e_addhandler(lex_t* c, char* h) except -1:
127 print "e_addhandler", h 146 #print "e_addhandler", h
128 # data.setVarFlag(h, "handler", 1, d) 147 # data.setVarFlag(h, "handler", 1, d)
148 if c.config == 1:
149 from bb.parse import ParseError
150 raise ParseError("No handlers allowed in config files")
151 return -1
152
129 d = <object>c.data 153 d = <object>c.data
130 d.setVarFlag(h, "handler", 1) 154 d.setVarFlag(h, "handler", 1)
155 return 0
156
157cdef public int e_export_func(lex_t* c, char* function) except -1:
158 #print "e_export_func", function
159 if c.config == 1:
160 from bb.parse import ParseError
161 raise ParseError("No functions allowed in config files")
162 return -1
163
164 return 0
165
166cdef public int e_inherit(lex_t* c, char* file) except -1:
167 #print "e_inherit", file
131 168
132cdef public void e_export_func(lex_t* c, char* function): 169 if c.config == 1:
133 print "e_export_func", function 170 from bb.parse import ParseError
134 pass 171 raise ParseError("No inherits allowed in config files")
172 return -1
135 173
136cdef public void e_inherit(lex_t* c, char* file): 174 return 0
137 print "e_inherit", file
138 pass
139 175
140cdef public void e_include(lex_t* c, char* file): 176cdef public void e_include(lex_t* c, char* file):
141 print "e_include", file 177 from bb.parse import handle
142 d = <object>c.data 178 d = <object>c.data
143 d.expand(file) 179
144
145 try: 180 try:
146 parsefile(file, d) 181 handle(d.expand(file,d), d, True)
147 except IOError: 182 except IOError:
148 print "Could not include required file %s" % file 183 print "Could not include file", file
149 184
150 185
151cdef public void e_require(lex_t* c, char* file): 186cdef public int e_require(lex_t* c, char* file) except -1:
152 print "e_require", file 187 #print "e_require", file
188 from bb.parse import handle
153 d = <object>c.data 189 d = <object>c.data
154 d.expand(file) 190
155
156 try: 191 try:
157 parsefile(file, d) 192 handle(d.expand(file,d), d, True)
158 except IOError: 193 except IOError:
159 raise CParseError("Could not include required file %s" % file) 194 print "ParseError", file
195 from bb.parse import ParseError
196 raise ParseError("Could not include required file %s" % file)
197 return -1
198
199 return 0
200
201cdef public int e_proc(lex_t* c, char* key, char* what) except -1:
202 #print "e_proc", key, what
203 if c.config == 1:
204 from bb.parse import ParseError
205 raise ParseError("No inherits allowed in config files")
206 return -1
207
208 return 0
209
210cdef public int e_proc_python(lex_t* c, char* key, char* what) except -1:
211 #print "e_proc_python"
212 if c.config == 1:
213 from bb.parse import ParseError
214 raise ParseError("No pythin allowed in config files")
215 return -1
216
217 if key != NULL:
218 pass
219 #print "Key", key
220 if what != NULL:
221 pass
222 #print "What", what
223
224 return 0
225
226cdef public int e_proc_fakeroot(lex_t* c, char* key, char* what) except -1:
227 #print "e_fakeroot", key, what
228
229 if c.config == 1:
230 from bb.parse import ParseError
231 raise ParseError("No fakeroot allowed in config files")
232 return -1
233
234 return 0
235
236cdef public int e_def(lex_t* c, char* a, char* b, char* d) except -1:
237 #print "e_def", a, b, d
160 238
161cdef public void e_proc(lex_t* c, char* key, char* what): 239 if c.config == 1:
162 print "e_proc", key, what 240 from bb.parse import ParseError
163 pass 241 raise ParseError("No defs allowed in config files")
242 return -1
164 243
165cdef public void e_proc_python(lex_t* c, char* key, char* what): 244 return 0
166 print "e_proc_python", key, what
167 pass
168 245
169cdef public void e_proc_fakeroot(lex_t* c, char* key, char* what): 246cdef public int e_parse_error(lex_t* c) except -1:
170 print "e_fakeroot", key, what 247 print "e_parse_error", c.name, "line:", lineError, "parse:", errorParse
171 pass
172 248
173cdef public void e_def(lex_t* c, char* a, char* b, char* d):
174 print "e_def", key, what
175 pass
176 249
177cdef public void e_parse_error(lex_t* c): 250 from bb.parse import ParseError
178 print "e_parse_error", "line:", lineError, "parse:", errorParse 251 raise ParseError("There was an parse error, sorry unable to give more information at the current time. File: %s Line: %d" % (c.name,lineError) )
179 raise CParseError("There was an parse error, sorry unable to give more information at the current time.") 252 return -1
180 253
diff --git a/bitbake/lib/bb/parse/parse_c/bitbakeparser.cc b/bitbake/lib/bb/parse/parse_c/bitbakeparser.cc
index ee9a901b70..9d9793f8df 100644
--- a/bitbake/lib/bb/parse/parse_c/bitbakeparser.cc
+++ b/bitbake/lib/bb/parse/parse_c/bitbakeparser.cc
@@ -128,51 +128,49 @@ typedef union {
128*/ 128*/
129static const YYACTIONTYPE yy_action[] = { 129static const YYACTIONTYPE yy_action[] = {
130 /* 0 */ 82, 3, 7, 8, 38, 22, 39, 24, 26, 32, 130 /* 0 */ 82, 3, 7, 8, 38, 22, 39, 24, 26, 32,
131 /* 10 */ 34, 28, 30, 128, 1, 40, 53, 70, 55, 5, 131 /* 10 */ 34, 28, 30, 2, 21, 40, 53, 70, 55, 44,
132 /* 20 */ 60, 65, 67, 2, 21, 36, 69, 77, 9, 7, 132 /* 20 */ 60, 65, 67, 128, 1, 36, 69, 77, 42, 46,
133 /* 30 */ 11, 6, 13, 15, 17, 19, 12, 52, 50, 4, 133 /* 30 */ 11, 66, 13, 15, 17, 19, 64, 62, 9, 7,
134 /* 40 */ 74, 42, 46, 59, 57, 10, 64, 62, 38, 14, 134 /* 40 */ 74, 38, 45, 81, 59, 57, 38, 38, 73, 76,
135 /* 50 */ 73, 16, 38, 38, 76, 81, 18, 20, 23, 25, 135 /* 50 */ 5, 68, 52, 50, 14, 31, 47, 71, 48, 10,
136 /* 60 */ 27, 29, 31, 33, 35, 37, 56, 51, 90, 54, 136 /* 60 */ 72, 33, 23, 49, 6, 41, 51, 78, 75, 16,
137 /* 70 */ 58, 71, 41, 43, 63, 45, 44, 47, 72, 48, 137 /* 70 */ 4, 54, 35, 25, 18, 80, 79, 56, 27, 37,
138 /* 80 */ 75, 78, 80, 61, 90, 49, 66, 90, 90, 68, 138 /* 80 */ 58, 12, 61, 29, 43, 63, 20,
139 /* 90 */ 90, 90, 90, 90, 90, 79,
140}; 139};
141static const YYCODETYPE yy_lookahead[] = { 140static const YYCODETYPE yy_lookahead[] = {
142 /* 0 */ 0, 1, 2, 3, 23, 4, 25, 6, 7, 8, 141 /* 0 */ 0, 1, 2, 3, 23, 4, 25, 6, 7, 8,
143 /* 10 */ 9, 10, 11, 31, 32, 15, 16, 1, 18, 42, 142 /* 10 */ 9, 10, 11, 33, 34, 15, 16, 1, 18, 14,
144 /* 20 */ 20, 21, 22, 33, 34, 24, 26, 27, 1, 2, 143 /* 20 */ 20, 21, 22, 31, 32, 24, 26, 27, 13, 14,
145 /* 30 */ 4, 28, 6, 7, 8, 9, 5, 35, 36, 29, 144 /* 30 */ 4, 19, 6, 7, 8, 9, 39, 40, 1, 2,
146 /* 40 */ 24, 13, 14, 37, 38, 34, 39, 40, 23, 5, 145 /* 40 */ 24, 23, 12, 25, 37, 38, 23, 23, 25, 25,
147 /* 50 */ 25, 5, 23, 23, 25, 25, 5, 5, 5, 5, 146 /* 50 */ 42, 19, 35, 36, 5, 5, 12, 24, 13, 34,
148 /* 60 */ 5, 5, 5, 5, 5, 41, 17, 35, 43, 1, 147 /* 60 */ 41, 5, 5, 12, 28, 12, 35, 1, 41, 5,
149 /* 70 */ 37, 24, 12, 12, 39, 12, 14, 12, 41, 13, 148 /* 70 */ 29, 1, 5, 5, 5, 41, 24, 17, 5, 41,
150 /* 80 */ 41, 1, 41, 19, 43, 12, 19, 43, 43, 19, 149 /* 80 */ 37, 5, 19, 5, 12, 39, 5,
151 /* 90 */ 43, 43, 43, 43, 43, 24,
152}; 150};
153#define YY_SHIFT_USE_DFLT (-20) 151#define YY_SHIFT_USE_DFLT (-20)
154static const signed char yy_shift_ofst[] = { 152static const signed char yy_shift_ofst[] = {
155 /* 0 */ -20, 0, -20, 10, -20, 3, -20, -20, 27, -20, 153 /* 0 */ -20, 0, -20, 41, -20, 36, -20, -20, 37, -20,
156 /* 10 */ 26, 31, -20, 44, -20, 46, -20, 51, -20, 52, 154 /* 10 */ 26, 76, -20, 49, -20, 64, -20, 69, -20, 81,
157 /* 20 */ -20, 1, 53, -20, 54, -20, 55, -20, 56, -20, 155 /* 20 */ -20, 1, 57, -20, 68, -20, 73, -20, 78, -20,
158 /* 30 */ 57, -20, 58, -20, 59, -20, -20, -19, -20, -20, 156 /* 30 */ 50, -20, 56, -20, 67, -20, -20, -19, -20, -20,
159 /* 40 */ 60, 28, 61, 62, 63, -20, 65, 66, 73, -20, 157 /* 40 */ 53, 15, 72, 5, 30, -20, 44, 45, 51, -20,
160 /* 50 */ 60, -20, -20, 68, -20, 49, -20, 49, -20, -20, 158 /* 50 */ 53, -20, -20, 70, -20, 60, -20, 60, -20, -20,
161 /* 60 */ 64, -20, 64, -20, -20, 67, -20, 70, -20, 16, 159 /* 60 */ 63, -20, 63, -20, -20, 12, -20, 32, -20, 16,
162 /* 70 */ 47, -20, 25, -20, -20, 29, -20, 80, 71, -20, 160 /* 70 */ 33, -20, 23, -20, -20, 24, -20, 66, 52, -20,
163 /* 80 */ 30, -20, 161 /* 80 */ 18, -20,
164}; 162};
165#define YY_REDUCE_USE_DFLT (-24) 163#define YY_REDUCE_USE_DFLT (-21)
166static const signed char yy_reduce_ofst[] = { 164static const signed char yy_reduce_ofst[] = {
167 /* 0 */ -18, -10, -24, -24, -23, -24, -24, -24, 11, -24, 165 /* 0 */ -8, -20, -21, -21, 8, -21, -21, -21, 25, -21,
168 /* 10 */ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 166 /* 10 */ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
169 /* 20 */ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 167 /* 20 */ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
170 /* 30 */ -24, -24, -24, -24, -24, -24, 24, -24, -24, -24, 168 /* 30 */ -21, -21, -21, -21, -21, -21, 38, -21, -21, -21,
171 /* 40 */ 2, -24, -24, -24, -24, -24, -24, -24, -24, -24, 169 /* 40 */ 17, -21, -21, -21, -21, -21, -21, -21, -21, -21,
172 /* 50 */ 32, -24, -24, -24, -24, 6, -24, 33, -24, -24, 170 /* 50 */ 31, -21, -21, -21, -21, 7, -21, 43, -21, -21,
173 /* 60 */ 7, -24, 35, -24, -24, -24, -24, -24, -24, -24, 171 /* 60 */ -3, -21, 46, -21, -21, -21, -21, -21, -21, -21,
174 /* 70 */ -24, 37, -24, -24, 39, -24, -24, -24, -24, 41, 172 /* 70 */ -21, 19, -21, -21, 27, -21, -21, -21, -21, 34,
175 /* 80 */ -24, -24, 173 /* 80 */ -21, -21,
176}; 174};
177static const YYACTIONTYPE yy_default[] = { 175static const YYACTIONTYPE yy_default[] = {
178 /* 0 */ 84, 127, 83, 85, 125, 126, 124, 86, 127, 85, 176 /* 0 */ 84, 127, 83, 85, 125, 126, 124, 86, 127, 85,
@@ -420,7 +418,7 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
420 case 29: 418 case 29:
421#line 50 "bitbakeparser.y" 419#line 50 "bitbakeparser.y"
422{ (yypminor->yy0).release_this (); } 420{ (yypminor->yy0).release_this (); }
423#line 425 "bitbakeparser.c" 421#line 423 "bitbakeparser.c"
424 break; 422 break;
425 default: break; /* If no destructor action specified: do nothing */ 423 default: break; /* If no destructor action specified: do nothing */
426 } 424 }
@@ -694,7 +692,7 @@ static void yy_reduce(
694{ yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() ); 692{ yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() );
695 yymsp[0].minor.yy0.assignString( 0 ); 693 yymsp[0].minor.yy0.assignString( 0 );
696 yymsp[0].minor.yy0.release_this(); } 694 yymsp[0].minor.yy0.release_this(); }
697#line 699 "bitbakeparser.c" 695#line 697 "bitbakeparser.c"
698 break; 696 break;
699 case 4: 697 case 4:
700#line 64 "bitbakeparser.y" 698#line 64 "bitbakeparser.y"
@@ -702,7 +700,7 @@ static void yy_reduce(
702 yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() ); 700 yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() );
703 yymsp[0].minor.yy0.assignString( 0 ); 701 yymsp[0].minor.yy0.assignString( 0 );
704 yymsp[0].minor.yy0.release_this(); } 702 yymsp[0].minor.yy0.release_this(); }
705#line 707 "bitbakeparser.c" 703#line 705 "bitbakeparser.c"
706 break; 704 break;
707 case 5: 705 case 5:
708#line 70 "bitbakeparser.y" 706#line 70 "bitbakeparser.y"
@@ -711,7 +709,7 @@ static void yy_reduce(
711 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor); 709 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor);
712 yy_destructor(4,&yymsp[-1].minor); 710 yy_destructor(4,&yymsp[-1].minor);
713} 711}
714#line 716 "bitbakeparser.c" 712#line 714 "bitbakeparser.c"
715 break; 713 break;
716 case 6: 714 case 6:
717#line 74 "bitbakeparser.y" 715#line 74 "bitbakeparser.y"
@@ -720,7 +718,7 @@ static void yy_reduce(
720 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor); 718 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor);
721 yy_destructor(6,&yymsp[-1].minor); 719 yy_destructor(6,&yymsp[-1].minor);
722} 720}
723#line 725 "bitbakeparser.c" 721#line 723 "bitbakeparser.c"
724 break; 722 break;
725 case 7: 723 case 7:
726#line 78 "bitbakeparser.y" 724#line 78 "bitbakeparser.y"
@@ -729,7 +727,7 @@ static void yy_reduce(
729 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor); 727 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor);
730 yy_destructor(7,&yymsp[-1].minor); 728 yy_destructor(7,&yymsp[-1].minor);
731} 729}
732#line 734 "bitbakeparser.c" 730#line 732 "bitbakeparser.c"
733 break; 731 break;
734 case 8: 732 case 8:
735#line 82 "bitbakeparser.y" 733#line 82 "bitbakeparser.y"
@@ -738,7 +736,7 @@ static void yy_reduce(
738 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor); 736 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor);
739 yy_destructor(8,&yymsp[-1].minor); 737 yy_destructor(8,&yymsp[-1].minor);
740} 738}
741#line 743 "bitbakeparser.c" 739#line 741 "bitbakeparser.c"
742 break; 740 break;
743 case 9: 741 case 9:
744#line 86 "bitbakeparser.y" 742#line 86 "bitbakeparser.y"
@@ -746,56 +744,56 @@ static void yy_reduce(
746 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor); 744 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(3,&yymsp[-3].minor);
747 yy_destructor(9,&yymsp[-1].minor); 745 yy_destructor(9,&yymsp[-1].minor);
748} 746}
749#line 751 "bitbakeparser.c" 747#line 749 "bitbakeparser.c"
750 break; 748 break;
751 case 10: 749 case 10:
752#line 90 "bitbakeparser.y" 750#line 90 "bitbakeparser.y"
753{ e_assign( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 751{ e_assign( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
754 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(4,&yymsp[-1].minor); 752 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(4,&yymsp[-1].minor);
755} 753}
756#line 758 "bitbakeparser.c" 754#line 756 "bitbakeparser.c"
757 break; 755 break;
758 case 11: 756 case 11:
759#line 93 "bitbakeparser.y" 757#line 93 "bitbakeparser.y"
760{ e_precat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 758{ e_precat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
761 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(6,&yymsp[-1].minor); 759 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(6,&yymsp[-1].minor);
762} 760}
763#line 765 "bitbakeparser.c" 761#line 763 "bitbakeparser.c"
764 break; 762 break;
765 case 12: 763 case 12:
766#line 96 "bitbakeparser.y" 764#line 96 "bitbakeparser.y"
767{ e_postcat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 765{ e_postcat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
768 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(7,&yymsp[-1].minor); 766 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(7,&yymsp[-1].minor);
769} 767}
770#line 772 "bitbakeparser.c" 768#line 770 "bitbakeparser.c"
771 break; 769 break;
772 case 13: 770 case 13:
773#line 99 "bitbakeparser.y" 771#line 99 "bitbakeparser.y"
774{ e_prepend( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 772{ e_prepend( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
775 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(10,&yymsp[-1].minor); 773 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(10,&yymsp[-1].minor);
776} 774}
777#line 779 "bitbakeparser.c" 775#line 777 "bitbakeparser.c"
778 break; 776 break;
779 case 14: 777 case 14:
780#line 102 "bitbakeparser.y" 778#line 102 "bitbakeparser.y"
781{ e_append( lex, yymsp[-2].minor.yy0.string() , yymsp[0].minor.yy0.string() ); 779{ e_append( lex, yymsp[-2].minor.yy0.string() , yymsp[0].minor.yy0.string() );
782 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(11,&yymsp[-1].minor); 780 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(11,&yymsp[-1].minor);
783} 781}
784#line 786 "bitbakeparser.c" 782#line 784 "bitbakeparser.c"
785 break; 783 break;
786 case 15: 784 case 15:
787#line 105 "bitbakeparser.y" 785#line 105 "bitbakeparser.y"
788{ e_immediate( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 786{ e_immediate( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
789 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(8,&yymsp[-1].minor); 787 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(8,&yymsp[-1].minor);
790} 788}
791#line 793 "bitbakeparser.c" 789#line 791 "bitbakeparser.c"
792 break; 790 break;
793 case 16: 791 case 16:
794#line 108 "bitbakeparser.y" 792#line 108 "bitbakeparser.y"
795{ e_cond( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() ); 793{ e_cond( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
796 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(9,&yymsp[-1].minor); 794 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(9,&yymsp[-1].minor);
797} 795}
798#line 800 "bitbakeparser.c" 796#line 798 "bitbakeparser.c"
799 break; 797 break;
800 case 17: 798 case 17:
801#line 112 "bitbakeparser.y" 799#line 112 "bitbakeparser.y"
@@ -803,7 +801,7 @@ static void yy_reduce(
803 yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(13,&yymsp[-3].minor); 801 yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(13,&yymsp[-3].minor);
804 yy_destructor(14,&yymsp[-1].minor); 802 yy_destructor(14,&yymsp[-1].minor);
805} 803}
806#line 808 "bitbakeparser.c" 804#line 806 "bitbakeparser.c"
807 break; 805 break;
808 case 18: 806 case 18:
809#line 115 "bitbakeparser.y" 807#line 115 "bitbakeparser.y"
@@ -811,55 +809,55 @@ static void yy_reduce(
811 yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(14,&yymsp[-3].minor); 809 yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(14,&yymsp[-3].minor);
812 yy_destructor(13,&yymsp[-1].minor); 810 yy_destructor(13,&yymsp[-1].minor);
813} 811}
814#line 816 "bitbakeparser.c" 812#line 814 "bitbakeparser.c"
815 break; 813 break;
816 case 19: 814 case 19:
817#line 118 "bitbakeparser.y" 815#line 118 "bitbakeparser.y"
818{ e_addtask( lex, yymsp[0].minor.yy0.string(), NULL, NULL); 816{ e_addtask( lex, yymsp[0].minor.yy0.string(), NULL, NULL);
819 yymsp[0].minor.yy0.release_this();} 817 yymsp[0].minor.yy0.release_this();}
820#line 822 "bitbakeparser.c" 818#line 820 "bitbakeparser.c"
821 break; 819 break;
822 case 20: 820 case 20:
823#line 121 "bitbakeparser.y" 821#line 121 "bitbakeparser.y"
824{ e_addtask( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string(), NULL); 822{ e_addtask( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string(), NULL);
825 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(13,&yymsp[-1].minor); 823 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(13,&yymsp[-1].minor);
826} 824}
827#line 829 "bitbakeparser.c" 825#line 827 "bitbakeparser.c"
828 break; 826 break;
829 case 21: 827 case 21:
830#line 124 "bitbakeparser.y" 828#line 124 "bitbakeparser.y"
831{ e_addtask( lex, yymsp[-2].minor.yy0.string(), NULL, yymsp[0].minor.yy0.string()); 829{ e_addtask( lex, yymsp[-2].minor.yy0.string(), NULL, yymsp[0].minor.yy0.string());
832 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(14,&yymsp[-1].minor); 830 yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); yy_destructor(14,&yymsp[-1].minor);
833} 831}
834#line 836 "bitbakeparser.c" 832#line 834 "bitbakeparser.c"
835 break; 833 break;
836 case 25: 834 case 25:
837#line 131 "bitbakeparser.y" 835#line 131 "bitbakeparser.y"
838{ e_addhandler( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this (); yy_destructor(16,&yymsp[-1].minor); 836{ e_addhandler( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this (); yy_destructor(16,&yymsp[-1].minor);
839} 837}
840#line 842 "bitbakeparser.c" 838#line 840 "bitbakeparser.c"
841 break; 839 break;
842 case 26: 840 case 26:
843#line 133 "bitbakeparser.y" 841#line 133 "bitbakeparser.y"
844{ e_export_func( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this(); } 842{ e_export_func( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this(); }
845#line 847 "bitbakeparser.c" 843#line 845 "bitbakeparser.c"
846 break; 844 break;
847 case 30: 845 case 30:
848#line 138 "bitbakeparser.y" 846#line 138 "bitbakeparser.y"
849{ e_inherit( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this (); } 847{ e_inherit( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this (); }
850#line 852 "bitbakeparser.c" 848#line 850 "bitbakeparser.c"
851 break; 849 break;
852 case 34: 850 case 34:
853#line 144 "bitbakeparser.y" 851#line 144 "bitbakeparser.y"
854{ e_include( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this(); yy_destructor(21,&yymsp[-1].minor); 852{ e_include( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this(); yy_destructor(21,&yymsp[-1].minor);
855} 853}
856#line 858 "bitbakeparser.c" 854#line 856 "bitbakeparser.c"
857 break; 855 break;
858 case 35: 856 case 35:
859#line 147 "bitbakeparser.y" 857#line 147 "bitbakeparser.y"
860{ e_require( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this(); yy_destructor(22,&yymsp[-1].minor); 858{ e_require( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this(); yy_destructor(22,&yymsp[-1].minor);
861} 859}
862#line 864 "bitbakeparser.c" 860#line 862 "bitbakeparser.c"
863 break; 861 break;
864 case 36: 862 case 36:
865#line 150 "bitbakeparser.y" 863#line 150 "bitbakeparser.y"
@@ -868,12 +866,12 @@ static void yy_reduce(
868 yymsp[-1].minor.yy0.release_this (); 866 yymsp[-1].minor.yy0.release_this ();
869 yymsp[0].minor.yy0.release_this (); 867 yymsp[0].minor.yy0.release_this ();
870 } 868 }
871#line 873 "bitbakeparser.c" 869#line 871 "bitbakeparser.c"
872 break; 870 break;
873 case 37: 871 case 37:
874#line 155 "bitbakeparser.y" 872#line 155 "bitbakeparser.y"
875{ yygotominor.yy0.assignString(0); } 873{ yygotominor.yy0.assignString(0); }
876#line 878 "bitbakeparser.c" 874#line 876 "bitbakeparser.c"
877 break; 875 break;
878 case 38: 876 case 38:
879#line 157 "bitbakeparser.y" 877#line 157 "bitbakeparser.y"
@@ -881,7 +879,7 @@ static void yy_reduce(
881 yymsp[-3].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this(); yy_destructor(24,&yymsp[-2].minor); 879 yymsp[-3].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this(); yy_destructor(24,&yymsp[-2].minor);
882 yy_destructor(25,&yymsp[0].minor); 880 yy_destructor(25,&yymsp[0].minor);
883} 881}
884#line 886 "bitbakeparser.c" 882#line 884 "bitbakeparser.c"
885 break; 883 break;
886 case 39: 884 case 39:
887#line 160 "bitbakeparser.y" 885#line 160 "bitbakeparser.y"
@@ -890,7 +888,7 @@ static void yy_reduce(
890 yy_destructor(24,&yymsp[-2].minor); 888 yy_destructor(24,&yymsp[-2].minor);
891 yy_destructor(25,&yymsp[0].minor); 889 yy_destructor(25,&yymsp[0].minor);
892} 890}
893#line 895 "bitbakeparser.c" 891#line 893 "bitbakeparser.c"
894 break; 892 break;
895 case 40: 893 case 40:
896#line 163 "bitbakeparser.y" 894#line 163 "bitbakeparser.y"
@@ -899,7 +897,7 @@ static void yy_reduce(
899 yy_destructor(24,&yymsp[-2].minor); 897 yy_destructor(24,&yymsp[-2].minor);
900 yy_destructor(25,&yymsp[0].minor); 898 yy_destructor(25,&yymsp[0].minor);
901} 899}
902#line 904 "bitbakeparser.c" 900#line 902 "bitbakeparser.c"
903 break; 901 break;
904 case 41: 902 case 41:
905#line 167 "bitbakeparser.y" 903#line 167 "bitbakeparser.y"
@@ -908,7 +906,7 @@ static void yy_reduce(
908 yy_destructor(24,&yymsp[-2].minor); 906 yy_destructor(24,&yymsp[-2].minor);
909 yy_destructor(25,&yymsp[0].minor); 907 yy_destructor(25,&yymsp[0].minor);
910} 908}
911#line 913 "bitbakeparser.c" 909#line 911 "bitbakeparser.c"
912 break; 910 break;
913 case 42: 911 case 42:
914#line 171 "bitbakeparser.y" 912#line 171 "bitbakeparser.y"
@@ -916,18 +914,18 @@ static void yy_reduce(
916 yygotominor.yy0.assignString( token_t::concatString(yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string()) ); 914 yygotominor.yy0.assignString( token_t::concatString(yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string()) );
917 yymsp[-1].minor.yy0.release_this (); yymsp[0].minor.yy0.release_this (); 915 yymsp[-1].minor.yy0.release_this (); yymsp[0].minor.yy0.release_this ();
918 } 916 }
919#line 921 "bitbakeparser.c" 917#line 919 "bitbakeparser.c"
920 break; 918 break;
921 case 43: 919 case 43:
922#line 175 "bitbakeparser.y" 920#line 175 "bitbakeparser.y"
923{ yygotominor.yy0.assignString( 0 ); } 921{ yygotominor.yy0.assignString( 0 ); }
924#line 926 "bitbakeparser.c" 922#line 924 "bitbakeparser.c"
925 break; 923 break;
926 case 44: 924 case 44:
927#line 177 "bitbakeparser.y" 925#line 177 "bitbakeparser.y"
928{ e_def( lex, yymsp[-2].minor.yy0.string(), yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string()); 926{ e_def( lex, yymsp[-2].minor.yy0.string(), yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string());
929 yymsp[-2].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); } 927 yymsp[-2].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); }
930#line 932 "bitbakeparser.c" 928#line 930 "bitbakeparser.c"
931 break; 929 break;
932 }; 930 };
933 yygoto = yyRuleInfo[yyruleno].lhs; 931 yygoto = yyRuleInfo[yyruleno].lhs;
@@ -986,7 +984,7 @@ static void yy_syntax_error(
986#define TOKEN (yyminor.yy0) 984#define TOKEN (yyminor.yy0)
987#line 52 "bitbakeparser.y" 985#line 52 "bitbakeparser.y"
988 e_parse_error( lex ); 986 e_parse_error( lex );
989#line 992 "bitbakeparser.c" 987#line 990 "bitbakeparser.c"
990 bbparseARG_STORE; /* Suppress warning about unused %extra_argument variable */ 988 bbparseARG_STORE; /* Suppress warning about unused %extra_argument variable */
991} 989}
992 990
@@ -1042,7 +1040,7 @@ void bbparse(
1042 /* (re)initialize the parser, if necessary */ 1040 /* (re)initialize the parser, if necessary */
1043 yypParser = (yyParser*)yyp; 1041 yypParser = (yyParser*)yyp;
1044 if( yypParser->yyidx<0 ){ 1042 if( yypParser->yyidx<0 ){
1045 /* if( yymajor==0 ) return; // not sure why this was here... */ 1043 if( yymajor==0 ) return;
1046 yypParser->yyidx = 0; 1044 yypParser->yyidx = 0;
1047 yypParser->yyerrcnt = -1; 1045 yypParser->yyerrcnt = -1;
1048 yypParser->yystack[0].stateno = 0; 1046 yypParser->yystack[0].stateno = 0;
diff --git a/bitbake/lib/bb/parse/parse_c/bitbakescanner.cc b/bitbake/lib/bb/parse/parse_c/bitbakescanner.cc
index 43dad12d39..acc13f7c34 100644
--- a/bitbake/lib/bb/parse/parse_c/bitbakescanner.cc
+++ b/bitbake/lib/bb/parse/parse_c/bitbakescanner.cc
@@ -8,7 +8,7 @@
8#define FLEX_SCANNER 8#define FLEX_SCANNER
9#define YY_FLEX_MAJOR_VERSION 2 9#define YY_FLEX_MAJOR_VERSION 2
10#define YY_FLEX_MINOR_VERSION 5 10#define YY_FLEX_MINOR_VERSION 5
11#define YY_FLEX_SUBMINOR_VERSION 31 11#define YY_FLEX_SUBMINOR_VERSION 33
12#if YY_FLEX_SUBMINOR_VERSION > 0 12#if YY_FLEX_SUBMINOR_VERSION > 0
13#define FLEX_BETA 13#define FLEX_BETA
14#endif 14#endif
@@ -30,7 +30,15 @@
30 30
31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32 32
33#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L 33#if __STDC_VERSION__ >= 199901L
34
35/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
37 */
38#ifndef __STDC_LIMIT_MACROS
39#define __STDC_LIMIT_MACROS 1
40#endif
41
34#include <inttypes.h> 42#include <inttypes.h>
35typedef int8_t flex_int8_t; 43typedef int8_t flex_int8_t;
36typedef uint8_t flex_uint8_t; 44typedef uint8_t flex_uint8_t;
@@ -153,6 +161,10 @@ int yylex_init (yyscan_t* scanner);
153#define YY_BUF_SIZE 16384 161#define YY_BUF_SIZE 16384
154#endif 162#endif
155 163
164/* The state buf must be large enough to hold one state per character in the main buffer.
165 */
166#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
167
156#ifndef YY_TYPEDEF_YY_BUFFER_STATE 168#ifndef YY_TYPEDEF_YY_BUFFER_STATE
157#define YY_TYPEDEF_YY_BUFFER_STATE 169#define YY_TYPEDEF_YY_BUFFER_STATE
158typedef struct yy_buffer_state *YY_BUFFER_STATE; 170typedef struct yy_buffer_state *YY_BUFFER_STATE;
@@ -493,7 +505,7 @@ static yyconst flex_int32_t yy_ec[256] =
493static yyconst flex_int32_t yy_meta[59] = 505static yyconst flex_int32_t yy_meta[59] =
494 { 0, 506 { 0,
495 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 507 1, 1, 2, 3, 1, 1, 4, 1, 1, 1,
496 5, 6, 5, 5, 7, 8, 1, 7, 1, 9, 508 5, 6, 5, 5, 5, 7, 1, 8, 1, 9,
497 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 509 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
498 9, 9, 10, 1, 11, 9, 9, 9, 9, 9, 510 9, 9, 10, 1, 11, 9, 9, 9, 9, 9,
499 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 511 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
@@ -565,18 +577,18 @@ static yyconst flex_int16_t yy_base[847] =
565 2077, 2072, 2066, 2069, 2056, 2067, 1398, 1343, 1408, 1404, 577 2077, 2072, 2066, 2069, 2056, 2067, 1398, 1343, 1408, 1404,
566 643, 1409, 2071, 2066, 2060, 2063, 2050, 2061, 2065, 2060, 578 643, 1409, 2071, 2066, 2060, 2063, 2050, 2061, 2065, 2060,
567 2054, 2057, 2044, 2055, 1420, 1445, 1413, 1447, 1453, 1454, 579 2054, 2057, 2044, 2055, 1420, 1445, 1413, 1447, 1453, 1454,
568 2059, 2054, 2047, 2050, 2035, 2043, 1455, 1459, 1460, 1461, 580 2059, 2053, 2047, 2049, 2032, 2043, 1455, 1459, 1460, 1461,
569 1462, 1463, 1471, 1436, 1430, 1192, 1433, 1479, 1482, 1492, 581 1462, 1463, 1471, 1436, 1430, 1192, 1433, 1479, 1482, 1492,
570 582
571 1506, 1519, 1520, 1528, 2047, 2040, 2031, 0, 2034, 2019, 583 1506, 1519, 1520, 1528, 2046, 2037, 2031, 0, 2033, 2016,
572 2027, 1486, 1496, 1505, 1506, 1510, 1516, 1524, 2044, 2018, 584 2027, 1486, 1496, 1505, 1506, 1510, 1516, 1524, 2043, 2015,
573 0, 0, 0, 0, 1281, 1517, 2043, 2042, 2039, 2035, 585 0, 0, 0, 0, 1281, 1517, 2043, 2041, 2036, 2034,
574 2023, 1994, 2309, 2309, 2309, 2309, 2005, 1981, 0, 0, 586 2024, 1995, 2309, 2309, 2309, 2309, 2005, 1981, 0, 0,
575 0, 0, 1538, 1528, 1530, 1534, 1537, 1540, 1981, 1957, 587 0, 0, 1538, 1528, 1530, 1534, 1537, 1540, 1981, 1957,
576 0, 0, 0, 0, 1557, 1558, 1559, 1560, 1561, 1563, 588 0, 0, 0, 0, 1557, 1558, 1559, 1560, 1561, 1563,
577 1568, 1547, 1988, 1959, 1954, 1948, 1580, 1581, 1582, 1590, 589 1568, 1547, 1988, 1959, 1955, 1948, 1580, 1581, 1582, 1590,
578 1592, 1594, 1923, 1863, 0, 0, 0, 0, 1598, 1599, 590 1592, 1594, 1924, 1863, 0, 0, 0, 0, 1598, 1599,
579 1600, 1874, 1858, 1350, 1584, 1803, 1792, 1801, 1790, 1603, 591 1600, 1875, 1859, 1350, 1584, 1803, 1792, 1801, 1790, 1603,
580 1601, 1799, 1788, 1604, 1602, 1610, 1609, 1643, 1644, 1797, 592 1601, 1799, 1788, 1604, 1602, 1610, 1609, 1643, 1644, 1797,
581 593
582 1786, 1611, 1630, 1800, 1773, 1010, 1606, 1798, 1771, 1795, 594 1786, 1611, 1630, 1800, 1773, 1010, 1606, 1798, 1771, 1795,
@@ -593,8 +605,8 @@ static yyconst flex_int16_t yy_base[847] =
593 1768, 0, 742, 2309, 0, 1764, 0, 1778, 678, 1801, 605 1768, 0, 742, 2309, 0, 1764, 0, 1778, 678, 1801,
594 0, 2309, 1835, 1847, 1859, 1871, 1883, 550, 1892, 1898, 606 0, 2309, 1835, 1847, 1859, 1871, 1883, 550, 1892, 1898,
595 1907, 1919, 1931, 1939, 1945, 1950, 1956, 1965, 1977, 1989, 607 1907, 1919, 1931, 1939, 1945, 1950, 1956, 1965, 1977, 1989,
596 2001, 2013, 2025, 2033, 2039, 2042, 306, 304, 301, 2049, 608 2001, 2013, 2025, 2033, 2039, 2043, 306, 304, 301, 2050,
597 213, 2057, 136, 2065, 2073, 2081 609 213, 2058, 136, 2066, 2074, 2082
598 } ; 610 } ;
599 611
600static yyconst flex_int16_t yy_def[847] = 612static yyconst flex_int16_t yy_def[847] =
@@ -903,14 +915,14 @@ static yyconst flex_int16_t yy_nxt[2368] =
903 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 915 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
904 112, 128, 128, 128, 128, 128, 128, 128, 128, 128, 916 112, 128, 128, 128, 128, 128, 128, 128, 128, 128,
905 128, 128, 128, 155, 155, 155, 155, 155, 155, 155, 917 128, 128, 128, 155, 155, 155, 155, 155, 155, 155,
906 155, 155, 155, 155, 155, 167, 167, 167, 705, 167, 918 155, 155, 155, 155, 155, 167, 167, 167, 167, 705,
907 919
908 167, 167, 177, 177, 704, 177, 177, 183, 701, 183, 920 167, 167, 177, 177, 177, 704, 177, 183, 701, 183,
909 183, 183, 183, 183, 183, 183, 183, 183, 183, 187, 921 183, 183, 183, 183, 183, 183, 183, 183, 183, 187,
910 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 922 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
911 187, 201, 201, 201, 201, 201, 201, 201, 201, 201, 923 187, 201, 201, 201, 201, 201, 201, 201, 201, 201,
912 201, 201, 201, 209, 209, 700, 209, 209, 217, 217, 924 201, 201, 201, 209, 209, 209, 700, 209, 217, 217,
913 238, 217, 217, 217, 223, 223, 238, 223, 223, 231, 925 238, 217, 217, 217, 223, 223, 223, 238, 223, 231,
914 231, 238, 231, 231, 231, 237, 237, 237, 237, 237, 926 231, 238, 231, 231, 231, 237, 237, 237, 237, 237,
915 237, 237, 237, 237, 237, 237, 237, 239, 239, 239, 927 237, 237, 237, 237, 237, 237, 237, 239, 239, 239,
916 239, 239, 239, 239, 239, 239, 239, 239, 239, 256, 928 239, 239, 239, 239, 239, 239, 239, 239, 239, 256,
@@ -919,13 +931,13 @@ static yyconst flex_int16_t yy_nxt[2368] =
919 256, 261, 693, 692, 261, 261, 261, 261, 261, 261, 931 256, 261, 693, 692, 261, 261, 261, 261, 261, 261,
920 261, 261, 261, 264, 264, 264, 264, 264, 264, 264, 932 261, 261, 261, 264, 264, 264, 264, 264, 264, 264,
921 264, 264, 264, 264, 264, 267, 689, 688, 267, 267, 933 264, 264, 264, 264, 264, 267, 689, 688, 267, 267,
922 267, 267, 267, 267, 267, 267, 267, 284, 284, 687, 934 267, 267, 267, 267, 267, 267, 267, 284, 284, 284,
923 284, 284, 292, 292, 292, 686, 292, 292, 292, 296, 935 687, 284, 292, 292, 292, 292, 686, 292, 292, 296,
924 296, 184, 296, 418, 418, 184, 418, 418, 184, 184, 936 184, 296, 184, 296, 418, 418, 418, 184, 418, 184,
925 418, 433, 433, 683, 433, 433, 682, 678, 433, 465, 937 683, 418, 433, 433, 433, 682, 433, 678, 677, 433,
926 465, 677, 465, 465, 676, 675, 465, 500, 500, 674, 938 465, 465, 465, 676, 465, 675, 674, 465, 500, 500,
927 500, 500, 673, 654, 500, 514, 514, 653, 514, 514, 939 500, 673, 500, 654, 653, 500, 514, 514, 514, 652,
928 652, 651, 514, 650, 649, 642, 641, 640, 639, 638, 940 514, 651, 650, 514, 649, 642, 641, 640, 639, 638,
929 941
930 637, 636, 635, 634, 633, 632, 631, 624, 623, 622, 942 637, 636, 635, 634, 633, 632, 631, 624, 623, 622,
931 621, 620, 619, 611, 610, 609, 608, 607, 606, 605, 943 621, 620, 619, 611, 610, 609, 608, 607, 606, 605,
@@ -1167,14 +1179,14 @@ static yyconst flex_int16_t yy_chk[2368] =
1167 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 1179 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
1168 815, 816, 816, 816, 816, 816, 816, 816, 816, 816, 1180 815, 816, 816, 816, 816, 816, 816, 816, 816, 816,
1169 816, 816, 816, 817, 817, 817, 817, 817, 817, 817, 1181 816, 816, 816, 817, 817, 817, 817, 817, 817, 817,
1170 817, 817, 817, 817, 817, 819, 819, 819, 683, 819, 1182 817, 817, 817, 817, 817, 819, 819, 819, 819, 683,
1171 1183
1172 819, 819, 820, 820, 682, 820, 820, 821, 674, 821, 1184 819, 819, 820, 820, 820, 682, 820, 821, 674, 821,
1173 821, 821, 821, 821, 821, 821, 821, 821, 821, 822, 1185 821, 821, 821, 821, 821, 821, 821, 821, 821, 822,
1174 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 1186 822, 822, 822, 822, 822, 822, 822, 822, 822, 822,
1175 822, 823, 823, 823, 823, 823, 823, 823, 823, 823, 1187 822, 823, 823, 823, 823, 823, 823, 823, 823, 823,
1176 823, 823, 823, 824, 824, 673, 824, 824, 825, 825, 1188 823, 823, 823, 824, 824, 824, 673, 824, 825, 825,
1177 666, 825, 825, 825, 826, 826, 665, 826, 826, 827, 1189 666, 825, 825, 825, 826, 826, 826, 665, 826, 827,
1178 827, 664, 827, 827, 827, 828, 828, 828, 828, 828, 1190 827, 664, 827, 827, 827, 828, 828, 828, 828, 828,
1179 828, 828, 828, 828, 828, 828, 828, 829, 829, 829, 1191 828, 828, 828, 828, 828, 828, 828, 829, 829, 829,
1180 829, 829, 829, 829, 829, 829, 829, 829, 829, 830, 1192 829, 829, 829, 829, 829, 829, 829, 829, 829, 830,
@@ -1183,13 +1195,13 @@ static yyconst flex_int16_t yy_chk[2368] =
1183 830, 831, 650, 649, 831, 831, 831, 831, 831, 831, 1195 830, 831, 650, 649, 831, 831, 831, 831, 831, 831,
1184 831, 831, 831, 832, 832, 832, 832, 832, 832, 832, 1196 831, 831, 831, 832, 832, 832, 832, 832, 832, 832,
1185 832, 832, 832, 832, 832, 833, 638, 637, 833, 833, 1197 832, 832, 832, 832, 832, 833, 638, 637, 833, 833,
1186 833, 833, 833, 833, 833, 833, 833, 834, 834, 632, 1198 833, 833, 833, 833, 833, 833, 833, 834, 834, 834,
1187 834, 834, 835, 835, 835, 631, 835, 835, 835, 836, 1199 632, 834, 835, 835, 835, 835, 631, 835, 835, 836,
1188 836, 630, 836, 840, 840, 629, 840, 840, 628, 627, 1200 630, 836, 629, 836, 840, 840, 840, 628, 840, 627,
1189 840, 842, 842, 620, 842, 842, 619, 611, 842, 844, 1201 620, 840, 842, 842, 842, 619, 842, 611, 610, 842,
1190 844, 610, 844, 844, 609, 607, 844, 845, 845, 606, 1202 844, 844, 844, 609, 844, 607, 606, 844, 845, 845,
1191 845, 845, 605, 586, 845, 846, 846, 585, 846, 846, 1203 845, 605, 845, 586, 585, 845, 846, 846, 846, 584,
1192 584, 583, 846, 582, 581, 574, 573, 572, 571, 570, 1204 846, 583, 582, 846, 581, 574, 573, 572, 571, 570,
1193 1205
1194 569, 568, 567, 566, 565, 564, 563, 556, 555, 554, 1206 569, 568, 567, 566, 565, 564, 563, 556, 555, 554,
1195 553, 552, 551, 541, 540, 539, 538, 536, 535, 534, 1207 553, 552, 551, 541, 540, 539, 538, 536, 535, 534,
@@ -1323,7 +1335,7 @@ int errorParse;
1323enum { 1335enum {
1324 errorNone = 0, 1336 errorNone = 0,
1325 errorUnexpectedInput, 1337 errorUnexpectedInput,
1326 errorUnsupportedFeature, 1338 errorUnsupportedFeature,
1327}; 1339};
1328 1340
1329} 1341}
@@ -1351,7 +1363,7 @@ static const char* fixup_escapes (const char* sz);
1351 1363
1352 1364
1353 1365
1354#line 1355 "<stdout>" 1366#line 1367 "<stdout>"
1355 1367
1356#define INITIAL 0 1368#define INITIAL 0
1357#define S_DEF 1 1369#define S_DEF 1
@@ -1587,11 +1599,11 @@ YY_DECL
1587#line 164 "bitbakescanner.l" 1599#line 164 "bitbakescanner.l"
1588 1600
1589 1601
1590#line 1591 "<stdout>" 1602#line 1603 "<stdout>"
1591 1603
1592 if ( yyg->yy_init ) 1604 if ( !yyg->yy_init )
1593 { 1605 {
1594 yyg->yy_init = 0; 1606 yyg->yy_init = 1;
1595 1607
1596#ifdef YY_USER_INIT 1608#ifdef YY_USER_INIT
1597 YY_USER_INIT; 1609 YY_USER_INIT;
@@ -1972,7 +1984,7 @@ YY_RULE_SETUP
1972#line 254 "bitbakescanner.l" 1984#line 254 "bitbakescanner.l"
1973ECHO; 1985ECHO;
1974 YY_BREAK 1986 YY_BREAK
1975#line 1976 "<stdout>" 1987#line 1988 "<stdout>"
1976 1988
1977 case YY_END_OF_BUFFER: 1989 case YY_END_OF_BUFFER:
1978 { 1990 {
@@ -2274,7 +2286,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
2274 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) 2286 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2275{ 2287{
2276 register int yy_is_jam; 2288 register int yy_is_jam;
2277 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 2289 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2278 register char *yy_cp = yyg->yy_c_buf_p; 2290 register char *yy_cp = yyg->yy_c_buf_p;
2279 2291
2280 register YY_CHAR yy_c = 1; 2292 register YY_CHAR yy_c = 1;
@@ -2730,10 +2742,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscann
2730 * @note If you want to scan bytes that may contain NUL values, then use 2742 * @note If you want to scan bytes that may contain NUL values, then use
2731 * yy_scan_bytes() instead. 2743 * yy_scan_bytes() instead.
2732 */ 2744 */
2733YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner) 2745YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
2734{ 2746{
2735 2747
2736 return yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner); 2748 return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
2737} 2749}
2738 2750
2739/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 2751/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -2743,7 +2755,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
2743 * @param yyscanner The scanner object. 2755 * @param yyscanner The scanner object.
2744 * @return the newly allocated buffer state object. 2756 * @return the newly allocated buffer state object.
2745 */ 2757 */
2746YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len , yyscan_t yyscanner) 2758YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
2747{ 2759{
2748 YY_BUFFER_STATE b; 2760 YY_BUFFER_STATE b;
2749 char *buf; 2761 char *buf;
@@ -2751,15 +2763,15 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len , yyscan_t yyscan
2751 int i; 2763 int i;
2752 2764
2753 /* Get memory for full buffer, including space for trailing EOB's. */ 2765 /* Get memory for full buffer, including space for trailing EOB's. */
2754 n = len + 2; 2766 n = _yybytes_len + 2;
2755 buf = (char *) yyalloc(n ,yyscanner ); 2767 buf = (char *) yyalloc(n ,yyscanner );
2756 if ( ! buf ) 2768 if ( ! buf )
2757 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 2769 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2758 2770
2759 for ( i = 0; i < len; ++i ) 2771 for ( i = 0; i < _yybytes_len; ++i )
2760 buf[i] = bytes[i]; 2772 buf[i] = yybytes[i];
2761 2773
2762 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; 2774 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2763 2775
2764 b = yy_scan_buffer(buf,n ,yyscanner); 2776 b = yy_scan_buffer(buf,n ,yyscanner);
2765 if ( ! b ) 2777 if ( ! b )
@@ -2987,21 +2999,51 @@ void yyset_debug (int bdebug , yyscan_t yyscanner)
2987 2999
2988/* Accessor methods for yylval and yylloc */ 3000/* Accessor methods for yylval and yylloc */
2989 3001
3002/* User-visible API */
3003
3004/* yylex_init is special because it creates the scanner itself, so it is
3005 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3006 * That's why we explicitly handle the declaration, instead of using our macros.
3007 */
3008
3009int yylex_init(yyscan_t* ptr_yy_globals)
3010
3011{
3012 if (ptr_yy_globals == NULL){
3013 errno = EINVAL;
3014 return 1;
3015 }
3016
3017 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
3018
3019 if (*ptr_yy_globals == NULL){
3020 errno = ENOMEM;
3021 return 1;
3022 }
3023
3024 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3025 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3026
3027 return yy_init_globals ( *ptr_yy_globals );
3028}
3029
2990static int yy_init_globals (yyscan_t yyscanner) 3030static int yy_init_globals (yyscan_t yyscanner)
2991{ 3031{
2992 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3032 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2993 /* Initialization is the same as for the non-reentrant scanner. 3033 /* Initialization is the same as for the non-reentrant scanner.
2994 This function is called once per scanner lifetime. */ 3034 * This function is called from yylex_destroy(), so don't allocate here.
3035 */
2995 3036
2996 yyg->yy_buffer_stack = 0; 3037 yyg->yy_buffer_stack = 0;
2997 yyg->yy_buffer_stack_top = 0; 3038 yyg->yy_buffer_stack_top = 0;
2998 yyg->yy_buffer_stack_max = 0; 3039 yyg->yy_buffer_stack_max = 0;
2999 yyg->yy_c_buf_p = (char *) 0; 3040 yyg->yy_c_buf_p = (char *) 0;
3000 yyg->yy_init = 1; 3041 yyg->yy_init = 0;
3001 yyg->yy_start = 0; 3042 yyg->yy_start = 0;
3043
3002 yyg->yy_start_stack_ptr = 0; 3044 yyg->yy_start_stack_ptr = 0;
3003 yyg->yy_start_stack_depth = 0; 3045 yyg->yy_start_stack_depth = 0;
3004 yyg->yy_start_stack = (int *) 0; 3046 yyg->yy_start_stack = NULL;
3005 3047
3006/* Defined in main.c */ 3048/* Defined in main.c */
3007#ifdef YY_STDINIT 3049#ifdef YY_STDINIT
@@ -3018,33 +3060,6 @@ static int yy_init_globals (yyscan_t yyscanner)
3018 return 0; 3060 return 0;
3019} 3061}
3020 3062
3021/* User-visible API */
3022
3023/* yylex_init is special because it creates the scanner itself, so it is
3024 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3025 * That's why we explicitly handle the declaration, instead of using our macros.
3026 */
3027
3028int yylex_init(yyscan_t* ptr_yy_globals)
3029
3030{
3031 if (ptr_yy_globals == NULL){
3032 errno = EINVAL;
3033 return 1;
3034 }
3035
3036 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
3037
3038 if (*ptr_yy_globals == NULL){
3039 errno = ENOMEM;
3040 return 1;
3041 }
3042
3043 memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
3044
3045 return yy_init_globals ( *ptr_yy_globals );
3046}
3047
3048/* yylex_destroy is for both reentrant and non-reentrant scanners. */ 3063/* yylex_destroy is for both reentrant and non-reentrant scanners. */
3049int yylex_destroy (yyscan_t yyscanner) 3064int yylex_destroy (yyscan_t yyscanner)
3050{ 3065{
@@ -3065,8 +3080,13 @@ int yylex_destroy (yyscan_t yyscanner)
3065 yyfree(yyg->yy_start_stack ,yyscanner ); 3080 yyfree(yyg->yy_start_stack ,yyscanner );
3066 yyg->yy_start_stack = NULL; 3081 yyg->yy_start_stack = NULL;
3067 3082
3083 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3084 * yylex() is called, initialization will occur. */
3085 yy_init_globals( yyscanner);
3086
3068 /* Destroy the main struct (reentrant only). */ 3087 /* Destroy the main struct (reentrant only). */
3069 yyfree ( yyscanner , yyscanner ); 3088 yyfree ( yyscanner , yyscanner );
3089 yyscanner = NULL;
3070 return 0; 3090 return 0;
3071} 3091}
3072 3092
@@ -3078,7 +3098,6 @@ int yylex_destroy (yyscan_t yyscanner)
3078static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) 3098static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3079{ 3099{
3080 register int i; 3100 register int i;
3081 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3082 for ( i = 0; i < n; ++i ) 3101 for ( i = 0; i < n; ++i )
3083 s1[i] = s2[i]; 3102 s1[i] = s2[i];
3084} 3103}
@@ -3088,7 +3107,6 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca
3088static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) 3107static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3089{ 3108{
3090 register int n; 3109 register int n;
3091 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3092 for ( n = 0; s[n]; ++n ) 3110 for ( n = 0; s[n]; ++n )
3093 ; 3111 ;
3094 3112
@@ -3120,18 +3138,6 @@ void yyfree (void * ptr , yyscan_t yyscanner)
3120 3138
3121#define YYTABLES_NAME "yytables" 3139#define YYTABLES_NAME "yytables"
3122 3140
3123#undef YY_NEW_FILE
3124#undef YY_FLUSH_BUFFER
3125#undef yy_set_bol
3126#undef yy_new_buffer
3127#undef yy_set_interactive
3128#undef yytext_ptr
3129#undef YY_DO_BEFORE_ACTION
3130
3131#ifdef YY_DECL_IS_OURS
3132#undef YY_DECL_IS_OURS
3133#undef YY_DECL
3134#endif
3135#line 254 "bitbakescanner.l" 3141#line 254 "bitbakescanner.l"
3136 3142
3137 3143
@@ -3148,47 +3154,49 @@ void lex_t::accept (int token, const char* sz)
3148 3154
3149void lex_t::input (char *buf, int *result, int max_size) 3155void lex_t::input (char *buf, int *result, int max_size)
3150{ 3156{
3151 printf("lex_t::input %p %d\n", buf, max_size); 3157 /* printf("lex_t::input %p %d\n", buf, max_size); */
3152 *result = fread(buf, 1, max_size, file); 3158 *result = fread(buf, 1, max_size, file);
3153 printf("lex_t::input result %d\n", *result); 3159 /* printf("lex_t::input result %d\n", *result); */
3154} 3160}
3155 3161
3156int lex_t::line ()const 3162int lex_t::line ()const
3157{ 3163{
3158 printf("lex_t::line\n"); 3164 /* printf("lex_t::line\n"); */
3159 return yyget_lineno (scanner); 3165 return yyget_lineno (scanner);
3160} 3166}
3161 3167
3162 3168
3163extern "C" { 3169extern "C" {
3164 3170
3165 void parse (FILE* file, PyObject* data) 3171 void parse (FILE* file, char* name, PyObject* data, int config)
3166 { 3172 {
3167 printf("parse bbparseAlloc\n"); 3173 /* printf("parse bbparseAlloc\n"); */
3168 void* parser = bbparseAlloc (malloc); 3174 void* parser = bbparseAlloc (malloc);
3169 yyscan_t scanner; 3175 yyscan_t scanner;
3170 lex_t lex; 3176 lex_t lex;
3171 3177
3172 printf("parse yylex_init\n"); 3178 /* printf("parse yylex_init\n"); */
3173 yylex_init (&scanner); 3179 yylex_init (&scanner);
3174 3180
3175 lex.parser = parser; 3181 lex.parser = parser;
3176 lex.scanner = scanner; 3182 lex.scanner = scanner;
3177 lex.file = file; 3183 lex.file = file;
3184 lex.name = name;
3178 lex.data = data; 3185 lex.data = data;
3186 lex.config = config;
3179 lex.parse = bbparse; 3187 lex.parse = bbparse;
3180 printf("parse yyset_extra\n"); 3188 /*printf("parse yyset_extra\n"); */
3181 yyset_extra (&lex, scanner); 3189 yyset_extra (&lex, scanner);
3182 3190
3183 printf("parse yylex\n"); 3191 /* printf("parse yylex\n"); */
3184 int result = yylex (scanner); 3192 int result = yylex (scanner);
3185 3193
3186 printf("parse result %d\n", result); 3194 /* printf("parse result %d\n", result); */
3187 3195
3188 lex.accept (0); 3196 lex.accept (0);
3189 printf("parse lex.accept\n"); 3197 /* printf("parse lex.accept\n"); */
3190 bbparseTrace (NULL, NULL); 3198 bbparseTrace (NULL, NULL);
3191 printf("parse bbparseTrace\n"); 3199 /* printf("parse bbparseTrace\n"); */
3192 3200
3193 if (result != T_EOF) 3201 if (result != T_EOF)
3194 printf ("premature end of file\n"); 3202 printf ("premature end of file\n");
diff --git a/bitbake/lib/bb/parse/parse_c/bitbakescanner.l b/bitbake/lib/bb/parse/parse_c/bitbakescanner.l
index f69a7325c3..b6592f28e9 100644
--- a/bitbake/lib/bb/parse/parse_c/bitbakescanner.l
+++ b/bitbake/lib/bb/parse/parse_c/bitbakescanner.l
@@ -91,7 +91,7 @@ int errorParse;
91enum { 91enum {
92 errorNone = 0, 92 errorNone = 0,
93 errorUnexpectedInput, 93 errorUnexpectedInput,
94 errorUnsupportedFeature, 94 errorUnsupportedFeature,
95}; 95};
96 96
97} 97}
@@ -142,7 +142,7 @@ SSTRING \'([^\n\r]|"\\\n")*\'
142VALUE ([^'" \t\n])|([^'" \t\n]([^\n]|(\\\n))*[^'" \t\n]) 142VALUE ([^'" \t\n])|([^'" \t\n]([^\n]|(\\\n))*[^'" \t\n])
143 143
144C_SS [a-zA-Z_] 144C_SS [a-zA-Z_]
145C_SB [a-zA-Z0-9_+-.] 145C_SB [a-zA-Z0-9_+-./]
146REF $\{{C_SS}{C_SB}*\} 146REF $\{{C_SS}{C_SB}*\}
147SYMBOL {C_SS}{C_SB}* 147SYMBOL {C_SS}{C_SB}*
148VARIABLE $?{C_SS}({C_SB}*|{REF})*(\[[a-zA-Z0-9_]*\])? 148VARIABLE $?{C_SS}({C_SB}*|{REF})*(\[[a-zA-Z0-9_]*\])?
@@ -265,47 +265,49 @@ void lex_t::accept (int token, const char* sz)
265 265
266void lex_t::input (char *buf, int *result, int max_size) 266void lex_t::input (char *buf, int *result, int max_size)
267{ 267{
268 printf("lex_t::input %p %d\n", buf, max_size); 268 /* printf("lex_t::input %p %d\n", buf, max_size); */
269 *result = fread(buf, 1, max_size, file); 269 *result = fread(buf, 1, max_size, file);
270 printf("lex_t::input result %d\n", *result); 270 /* printf("lex_t::input result %d\n", *result); */
271} 271}
272 272
273int lex_t::line ()const 273int lex_t::line ()const
274{ 274{
275 printf("lex_t::line\n"); 275 /* printf("lex_t::line\n"); */
276 return yyget_lineno (scanner); 276 return yyget_lineno (scanner);
277} 277}
278 278
279 279
280extern "C" { 280extern "C" {
281 281
282 void parse (FILE* file, PyObject* data) 282 void parse (FILE* file, char* name, PyObject* data, int config)
283 { 283 {
284 printf("parse bbparseAlloc\n"); 284 /* printf("parse bbparseAlloc\n"); */
285 void* parser = bbparseAlloc (malloc); 285 void* parser = bbparseAlloc (malloc);
286 yyscan_t scanner; 286 yyscan_t scanner;
287 lex_t lex; 287 lex_t lex;
288 288
289 printf("parse yylex_init\n"); 289 /* printf("parse yylex_init\n"); */
290 yylex_init (&scanner); 290 yylex_init (&scanner);
291 291
292 lex.parser = parser; 292 lex.parser = parser;
293 lex.scanner = scanner; 293 lex.scanner = scanner;
294 lex.file = file; 294 lex.file = file;
295 lex.name = name;
295 lex.data = data; 296 lex.data = data;
297 lex.config = config;
296 lex.parse = bbparse; 298 lex.parse = bbparse;
297 printf("parse yyset_extra\n"); 299 /*printf("parse yyset_extra\n"); */
298 yyset_extra (&lex, scanner); 300 yyset_extra (&lex, scanner);
299 301
300 printf("parse yylex\n"); 302 /* printf("parse yylex\n"); */
301 int result = yylex (scanner); 303 int result = yylex (scanner);
302 304
303 printf("parse result %d\n", result); 305 /* printf("parse result %d\n", result); */
304 306
305 lex.accept (0); 307 lex.accept (0);
306 printf("parse lex.accept\n"); 308 /* printf("parse lex.accept\n"); */
307 bbparseTrace (NULL, NULL); 309 bbparseTrace (NULL, NULL);
308 printf("parse bbparseTrace\n"); 310 /* printf("parse bbparseTrace\n"); */
309 311
310 if (result != T_EOF) 312 if (result != T_EOF)
311 printf ("premature end of file\n"); 313 printf ("premature end of file\n");
diff --git a/bitbake/lib/bb/parse/parse_c/lexer.h b/bitbake/lib/bb/parse/parse_c/lexer.h
index 651f3a8618..cb32be7037 100644
--- a/bitbake/lib/bb/parse/parse_c/lexer.h
+++ b/bitbake/lib/bb/parse/parse_c/lexer.h
@@ -27,13 +27,15 @@ THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27#include "Python.h" 27#include "Python.h"
28 28
29extern "C" { 29extern "C" {
30 30
31struct lex_t { 31struct lex_t {
32 void* parser; 32 void* parser;
33 void* scanner; 33 void* scanner;
34 FILE* file; 34 FILE* file;
35 char *name;
35 PyObject *data; 36 PyObject *data;
36 37 int config;
38
37 void* (*parse)(void*, int, token_t, lex_t*); 39 void* (*parse)(void*, int, token_t, lex_t*);
38 40
39 void accept(int token, const char* sz = NULL); 41 void accept(int token, const char* sz = NULL);
diff --git a/bitbake/lib/bb/parse/parse_c/lexerc.h b/bitbake/lib/bb/parse/parse_c/lexerc.h
index 0163a7d632..c8a19fb222 100644
--- a/bitbake/lib/bb/parse/parse_c/lexerc.h
+++ b/bitbake/lib/bb/parse/parse_c/lexerc.h
@@ -11,7 +11,9 @@ typedef struct {
11 void *parser; 11 void *parser;
12 void *scanner; 12 void *scanner;
13 FILE *file; 13 FILE *file;
14 char *name;
14 PyObject *data; 15 PyObject *data;
16 int config;
15} lex_t; 17} lex_t;
16 18
17#endif 19#endif
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py
index c82090fec0..34f4d25996 100644
--- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -23,7 +23,7 @@
23 23
24import re, bb, os, sys, time 24import re, bb, os, sys, time
25import bb.fetch, bb.build, bb.utils 25import bb.fetch, bb.build, bb.utils
26from bb import debug, data, fetch, fatal, methodpool 26from bb import data, fetch, methodpool
27 27
28from ConfHandler import include, localpath, obtain, init 28from ConfHandler import include, localpath, obtain, init
29from bb.parse import ParseError 29from bb.parse import ParseError
@@ -44,6 +44,13 @@ __bbpath_found__ = 0
44__classname__ = "" 44__classname__ = ""
45classes = [ None, ] 45classes = [ None, ]
46 46
47# We need to indicate EOF to the feeder. This code is so messy that
48# factoring it out to a close_parse_file method is out of question.
49# We will use the IN_PYTHON_EOF as an indicator to just close the method
50#
51# The two parts using it are tightly integrated anyway
52IN_PYTHON_EOF = -9999999999999
53
47__parsed_methods__ = methodpool.get_parsed_dict() 54__parsed_methods__ = methodpool.get_parsed_dict()
48 55
49def supports(fn, d): 56def supports(fn, d):
@@ -60,9 +67,9 @@ def inherit(files, d):
60 file = os.path.join('classes', '%s.bbclass' % file) 67 file = os.path.join('classes', '%s.bbclass' % file)
61 68
62 if not file in __inherit_cache.split(): 69 if not file in __inherit_cache.split():
63 debug(2, "BB %s:%d: inheriting %s" % (fn, lineno, file)) 70 bb.msg.debug(2, bb.msg.domain.Parsing, "BB %s:%d: inheriting %s" % (fn, lineno, file))
64 __inherit_cache += " %s" % file 71 __inherit_cache += " %s" % file
65 include(fn, file, d) 72 include(fn, file, d, "inherit")
66 data.setVar('__inherit_cache', __inherit_cache, d) 73 data.setVar('__inherit_cache', __inherit_cache, d)
67 74
68 75
@@ -75,9 +82,9 @@ def handle(fn, d, include = 0):
75 __residue__ = [] 82 __residue__ = []
76 83
77 if include == 0: 84 if include == 0:
78 debug(2, "BB " + fn + ": handle(data)") 85 bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data)")
79 else: 86 else:
80 debug(2, "BB " + fn + ": handle(data, include)") 87 bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data, include)")
81 88
82 (root, ext) = os.path.splitext(os.path.basename(fn)) 89 (root, ext) = os.path.splitext(os.path.basename(fn))
83 base_name = "%s%s" % (root,ext) 90 base_name = "%s%s" % (root,ext)
@@ -132,7 +139,7 @@ def handle(fn, d, include = 0):
132 feeder(lineno, s, fn, base_name, d) 139 feeder(lineno, s, fn, base_name, d)
133 if __inpython__: 140 if __inpython__:
134 # add a blank line to close out any python definition 141 # add a blank line to close out any python definition
135 feeder(lineno + 1, "", fn, base_name, d) 142 feeder(IN_PYTHON_EOF, "", fn, base_name, d)
136 if ext == ".bbclass": 143 if ext == ".bbclass":
137 classes.remove(__classname__) 144 classes.remove(__classname__)
138 else: 145 else:
@@ -152,7 +159,7 @@ def handle(fn, d, include = 0):
152 if t: 159 if t:
153 data.setVar('T', t, d) 160 data.setVar('T', t, d)
154 except Exception, e: 161 except Exception, e:
155 bb.debug(1, "executing anonymous function: %s" % e) 162 bb.msg.debug(1, bb.msg.domain.Parsing, "executing anonymous function: %s" % e)
156 raise 163 raise
157 data.delVar("__anonqueue", d) 164 data.delVar("__anonqueue", d)
158 data.delVar("__anonfunc", d) 165 data.delVar("__anonfunc", d)
@@ -220,7 +227,7 @@ def feeder(lineno, s, fn, root, d):
220 227
221 if __inpython__: 228 if __inpython__:
222 m = __python_func_regexp__.match(s) 229 m = __python_func_regexp__.match(s)
223 if m: 230 if m and lineno != IN_PYTHON_EOF:
224 __body__.append(s) 231 __body__.append(s)
225 return 232 return
226 else: 233 else:
@@ -240,6 +247,9 @@ def feeder(lineno, s, fn, root, d):
240 __body__ = [] 247 __body__ = []
241 __inpython__ = False 248 __inpython__ = False
242 249
250 if lineno == IN_PYTHON_EOF:
251 return
252
243# fall through 253# fall through
244 254
245 if s == '' or s[0] == '#': return # skip comments and empty lines 255 if s == '' or s[0] == '#': return # skip comments and empty lines
@@ -374,7 +384,7 @@ def vars_from_file(mypkg, d):
374def set_additional_vars(file, d, include): 384def set_additional_vars(file, d, include):
375 """Deduce rest of variables, e.g. ${A} out of ${SRC_URI}""" 385 """Deduce rest of variables, e.g. ${A} out of ${SRC_URI}"""
376 386
377 debug(2,"BB %s: set_additional_vars" % file) 387 bb.msg.debug(2, bb.msg.domain.Parsing, "BB %s: set_additional_vars" % file)
378 388
379 src_uri = data.getVar('SRC_URI', d) 389 src_uri = data.getVar('SRC_URI', d)
380 if not src_uri: 390 if not src_uri:
diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index 90978300af..4bc2bbc2b7 100644
--- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -22,7 +22,6 @@
22 Place, Suite 330, Boston, MA 02111-1307 USA.""" 22 Place, Suite 330, Boston, MA 02111-1307 USA."""
23 23
24import re, bb.data, os, sys 24import re, bb.data, os, sys
25from bb import debug, fatal
26from bb.parse import ParseError 25from bb.parse import ParseError
27 26
28#__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}]+)\s*(?P<colon>:)?(?P<ques>\?)?=\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$") 27#__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}]+)\s*(?P<colon>:)?(?P<ques>\?)?=\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$")
@@ -53,7 +52,7 @@ def localpath(fn, d):
53 localfn = fn 52 localfn = fn
54 return localfn 53 return localfn
55 54
56def obtain(fn, data = bb.data.init()): 55def obtain(fn, data):
57 import sys, bb 56 import sys, bb
58 fn = bb.data.expand(fn, data) 57 fn = bb.data.expand(fn, data)
59 localfn = bb.data.expand(localpath(fn, data), data) 58 localfn = bb.data.expand(localpath(fn, data), data)
@@ -61,30 +60,30 @@ def obtain(fn, data = bb.data.init()):
61 if localfn != fn: 60 if localfn != fn:
62 dldir = bb.data.getVar('DL_DIR', data, 1) 61 dldir = bb.data.getVar('DL_DIR', data, 1)
63 if not dldir: 62 if not dldir:
64 debug(1, "obtain: DL_DIR not defined") 63 bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: DL_DIR not defined")
65 return localfn 64 return localfn
66 bb.mkdirhier(dldir) 65 bb.mkdirhier(dldir)
67 try: 66 try:
68 bb.fetch.init([fn]) 67 bb.fetch.init([fn])
69 except bb.fetch.NoMethodError: 68 except bb.fetch.NoMethodError:
70 (type, value, traceback) = sys.exc_info() 69 (type, value, traceback) = sys.exc_info()
71 debug(1, "obtain: no method: %s" % value) 70 bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: no method: %s" % value)
72 return localfn 71 return localfn
73 72
74 try: 73 try:
75 bb.fetch.go(data) 74 bb.fetch.go(data)
76 except bb.fetch.MissingParameterError: 75 except bb.fetch.MissingParameterError:
77 (type, value, traceback) = sys.exc_info() 76 (type, value, traceback) = sys.exc_info()
78 debug(1, "obtain: missing parameters: %s" % value) 77 bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: missing parameters: %s" % value)
79 return localfn 78 return localfn
80 except bb.fetch.FetchError: 79 except bb.fetch.FetchError:
81 (type, value, traceback) = sys.exc_info() 80 (type, value, traceback) = sys.exc_info()
82 debug(1, "obtain: failed: %s" % value) 81 bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: failed: %s" % value)
83 return localfn 82 return localfn
84 return localfn 83 return localfn
85 84
86 85
87def include(oldfn, fn, data = bb.data.init(), error_out = False): 86def include(oldfn, fn, data, error_out):
88 """ 87 """
89 88
90 error_out If True a ParseError will be reaised if the to be included 89 error_out If True a ParseError will be reaised if the to be included
@@ -101,10 +100,10 @@ def include(oldfn, fn, data = bb.data.init(), error_out = False):
101 ret = handle(fn, data, True) 100 ret = handle(fn, data, True)
102 except IOError: 101 except IOError:
103 if error_out: 102 if error_out:
104 raise ParseError("Could not include required file %(fn)s" % vars() ) 103 raise ParseError("Could not %(error_out)s file %(fn)s" % vars() )
105 debug(2, "CONF file '%s' not found" % fn) 104 bb.msg.debug(2, bb.msg.domain.Parsing, "CONF file '%s' not found" % fn)
106 105
107def handle(fn, data = bb.data.init(), include = 0): 106def handle(fn, data, include = 0):
108 if include: 107 if include:
109 inc_string = "including" 108 inc_string = "including"
110 else: 109 else:
@@ -129,13 +128,13 @@ def handle(fn, data = bb.data.init(), include = 0):
129 if os.access(currname, os.R_OK): 128 if os.access(currname, os.R_OK):
130 f = open(currname, 'r') 129 f = open(currname, 'r')
131 abs_fn = currname 130 abs_fn = currname
132 debug(1, "CONF %s %s" % (inc_string, currname)) 131 bb.msg.debug(2, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string, currname))
133 break 132 break
134 if f is None: 133 if f is None:
135 raise IOError("file '%s' not found" % fn) 134 raise IOError("file '%s' not found" % fn)
136 else: 135 else:
137 f = open(fn,'r') 136 f = open(fn,'r')
138 debug(1, "CONF %s %s" % (inc_string,fn)) 137 bb.msg.debug(1, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string,fn))
139 abs_fn = fn 138 abs_fn = fn
140 139
141 if include: 140 if include:
@@ -161,7 +160,7 @@ def handle(fn, data = bb.data.init(), include = 0):
161 bb.data.setVar('FILE', oldfile, data) 160 bb.data.setVar('FILE', oldfile, data)
162 return data 161 return data
163 162
164def feeder(lineno, s, fn, data = bb.data.init()): 163def feeder(lineno, s, fn, data):
165 m = __config_regexp__.match(s) 164 m = __config_regexp__.match(s)
166 if m: 165 if m:
167 groupd = m.groupdict() 166 groupd = m.groupdict()
@@ -185,7 +184,7 @@ def feeder(lineno, s, fn, data = bb.data.init()):
185 else: 184 else:
186 val = groupd["value"] 185 val = groupd["value"]
187 if 'flag' in groupd and groupd['flag'] != None: 186 if 'flag' in groupd and groupd['flag'] != None:
188# bb.note("setVarFlag(%s, %s, %s, data)" % (key, groupd['flag'], val)) 187 bb.msg.debug(3, bb.msg.domain.Parsing, "setVarFlag(%s, %s, %s, data)" % (key, groupd['flag'], val))
189 bb.data.setVarFlag(key, groupd['flag'], val, data) 188 bb.data.setVarFlag(key, groupd['flag'], val, data)
190 else: 189 else:
191 bb.data.setVar(key, val, data) 190 bb.data.setVar(key, val, data)
@@ -194,14 +193,14 @@ def feeder(lineno, s, fn, data = bb.data.init()):
194 m = __include_regexp__.match(s) 193 m = __include_regexp__.match(s)
195 if m: 194 if m:
196 s = bb.data.expand(m.group(1), data) 195 s = bb.data.expand(m.group(1), data)
197# debug(2, "CONF %s:%d: including %s" % (fn, lineno, s)) 196 bb.msg.debug(3, bb.msg.domain.Parsing, "CONF %s:%d: including %s" % (fn, lineno, s))
198 include(fn, s, data) 197 include(fn, s, data, False)
199 return 198 return
200 199
201 m = __require_regexp__.match(s) 200 m = __require_regexp__.match(s)
202 if m: 201 if m:
203 s = bb.data.expand(m.group(1), data) 202 s = bb.data.expand(m.group(1), data)
204 include(fn, s, data, True) 203 include(fn, s, data, "include required")
205 return 204 return
206 205
207 raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s)); 206 raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s));