On (23/02/11 16:51), Richard Purdie wrote:
> The behaviour of "#" in multiline variables is established but very
> confusing for people and can cause data to disappear unexpectedly.
> 
> Currently this construct would drop one of the patches:
> 
> SRC_URI = "http://z/ \
>           # file://xxx.patch \
>            file://yyy.patch"
> 
> which in that context makes sense and people do use this. On the other
> hand people have done things like:
> 
> VARIABLE = "Some text which references the C code: \
>             #include "config.h" \
>             where we wanted to make some comment"
> 
> and then wondered why the line went missing. Since this is done
> silently, it can be hard to even realise there was a problem.
> 
> I've applied a patch in Poky which triggers big warnings about doing
> that and also changed the behaviour to include the line instead of
> dropping it. I'm not sure whether this change is desirable or not. It
> would certainly improve user experience if we didn't special case
> commends in multi line strings as its not what people would expect
> having used any other language.
> 
> Feedback welcome...

would it make sense to treat file:// http:// patch:// etc (SRC_URIs) specially 
? and treat # before it
as comment but not otherwise and we may ask to escape special
characters like # inside strings if they are not supposed to be
interpreted by bitbake. If # appears in string and is not above case
then we warn about it ?

> 
> Cheers,
> 
> Richard
> 
> 
> 
> bitbake/BBHandler: Improve handling of multiline comments and warn users of 
> the change
> 
> Signed-off-by: Richard Purdie <[email protected]>
> 
> diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py 
> b/bitbake/lib/bb/parse/parse_py/BBHandler.py
> index 31d1e21..402cd07 100644
> --- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
> +++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
> @@ -193,9 +193,14 @@ def feeder(lineno, s, fn, root, statements):
> if lineno == IN_PYTHON_EOF:
> return
> 
> -# fall through
> 
> - if s == '' or s[0] == '#': return # skip comments and empty lines
> + # Skip empty lines
> + if s == '':
> + return 
> +
> + if s[0] == '#':
> + if len(__residue__) != 0 and __residue__[0][0] != "#":
> + bb.error("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))
> 
> if s[-1] == '\\':
> __residue__.append(s[:-1])
> @@ -204,6 +209,10 @@ def feeder(lineno, s, fn, root, statements):
> s = "".join(__residue__) + s
> __residue__ = []
> 
> + # Skip comments
> + if s[0] == '#':
> + return
> +
> m = __func_start_regexp__.match(s)
> if m:
> __infunc__ = m.group("func") or "__anonymous"
> 
> 
> _______________________________________________
> Bitbake-dev mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/bitbake-dev

-- 
-Khem
_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to