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
