summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py4
-rw-r--r--bitbake/lib/bb/parse/parse_py/ConfHandler.py9
-rw-r--r--bitbake/lib/bb/tests/parse.py23
3 files changed, 32 insertions, 4 deletions
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py
index ee9bd760ce..68415735fd 100644
--- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -178,10 +178,10 @@ def feeder(lineno, s, fn, root, statements, eof=False):
178 178
179 if s and s[0] == '#': 179 if s and s[0] == '#':
180 if len(__residue__) != 0 and __residue__[0][0] != "#": 180 if len(__residue__) != 0 and __residue__[0][0] != "#":
181 bb.fatal("There is a comment on line %s of file %s (%s) which is in the middle of a multiline expression.\nBitbake used to ignore these but no longer does so, please fix your metadata as errors are likely as a result of this change." % (lineno, fn, s)) 181 bb.fatal("There is a comment on line %s of file %s:\n'''\n%s\n'''\nwhich is in the middle of a multiline expression. This syntax is invalid, please correct it." % (lineno, fn, s))
182 182
183 if len(__residue__) != 0 and __residue__[0][0] == "#" and (not s or s[0] != "#"): 183 if len(__residue__) != 0 and __residue__[0][0] == "#" and (not s or s[0] != "#"):
184 bb.fatal("There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s)) 184 bb.fatal("There is a confusing multiline partially commented expression on line %s of file %s:\n%s\nPlease clarify whether this is all a comment or should be parsed." % (lineno - len(__residue__), fn, "\n".join(__residue__)))
185 185
186 if s and s[-1] == '\\': 186 if s and s[-1] == '\\':
187 __residue__.append(s[:-1]) 187 __residue__.append(s[:-1])
diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index 810b6011cf..451e68dd66 100644
--- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -125,16 +125,21 @@ def handle(fn, data, include):
125 s = f.readline() 125 s = f.readline()
126 if not s: 126 if not s:
127 break 127 break
128 origlineno = lineno
129 origline = s
128 w = s.strip() 130 w = s.strip()
129 # skip empty lines 131 # skip empty lines
130 if not w: 132 if not w:
131 continue 133 continue
132 s = s.rstrip() 134 s = s.rstrip()
133 while s[-1] == '\\': 135 while s[-1] == '\\':
134 s2 = f.readline().rstrip() 136 line = f.readline()
137 origline += line
138 s2 = line.rstrip()
135 lineno = lineno + 1 139 lineno = lineno + 1
136 if (not s2 or s2 and s2[0] != "#") and s[0] == "#" : 140 if (not s2 or s2 and s2[0] != "#") and s[0] == "#" :
137 bb.fatal("There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s)) 141 bb.fatal("There is a confusing multiline, partially commented expression starting on line %s of file %s:\n%s\nPlease clarify whether this is all a comment or should be parsed." % (origlineno, fn, origline))
142
138 s = s[:-1] + s2 143 s = s[:-1] + s2
139 # skip comments 144 # skip comments
140 if s[0] == '#': 145 if s[0] == '#':
diff --git a/bitbake/lib/bb/tests/parse.py b/bitbake/lib/bb/tests/parse.py
index 2898f9bb14..1a3b74934d 100644
--- a/bitbake/lib/bb/tests/parse.py
+++ b/bitbake/lib/bb/tests/parse.py
@@ -194,3 +194,26 @@ deltask ${EMPTYVAR}
194 self.assertTrue('addtask ignored: " do_patch"' in stdout) 194 self.assertTrue('addtask ignored: " do_patch"' in stdout)
195 #self.assertTrue('dependent task do_foo for do_patch does not exist' in stdout) 195 #self.assertTrue('dependent task do_foo for do_patch does not exist' in stdout)
196 196
197 broken_multiline_comment = """
198# First line of comment \\
199# Second line of comment \\
200
201"""
202 def test_parse_broken_multiline_comment(self):
203 f = self.parsehelper(self.broken_multiline_comment)
204 with self.assertRaises(bb.BBHandledException):
205 d = bb.parse.handle(f.name, self.d)['']
206
207
208 comment_in_var = """
209VAR = " \\
210 SOMEVAL \\
211# some comment \\
212 SOMEOTHERVAL \\
213"
214"""
215 def test_parse_comment_in_var(self):
216 f = self.parsehelper(self.comment_in_var)
217 with self.assertRaises(bb.BBHandledException):
218 d = bb.parse.handle(f.name, self.d)['']
219