[OE-core] bb.data.*Var -> d.*Var conversion

Chris Larson clarson at kergoth.com
Wed Nov 9 15:24:23 UTC 2011


On Wed, Nov 9, 2011 at 7:59 AM, Darren Hart <dvhart at linux.intel.com> wrote:
> Hi Richard,
>
> On 11/09/2011 03:52 AM, Richard Purdie wrote:
>> I'm tempted to run the following over the metata to convert the
>> bb.data.*Var(...,d) and similar expressions to the form d.*Var(...).
>
> Oh yes please!
>
>>
>> Why? We get a lot of people doing copy, paste and edit of the code and
>> this way, we'll increase the chances of them finding better examples.
>>
>> I'm still looking at the diff this generates to see if there are any
>> more corner cases I need to tweak the expression for but feedback
>> welcome.
>>
>> sed \
>> -e 's:bb.data.\(setVar([^,]*,[^,]*\), \([^ )]*\) *):\2.\1):g' \
>
> Be sure to escape your periods, they are single character wildcards.
> It's unlikely you'll match something else, but better safe than sorry.
>
>> -e 's:bb.data.\(setVarFlag([^,]*,[^,]*,[^,]*\), \([^) ]*\) *):\2.\1):g' \
>> -e 's:bb.data.\(getVar([^,]*\), \([^, ]*\) *,\([^)]*\)):\2.\1,\3):g' \
>> -e 's:bb.data.\(getVarFlag([^,]*,[^,]*\), \([^, ]*\) *,\([^)]*\)):\2.\1,\3):g' \
>> -e 's:bb.data.\(getVarFlag([^,]*,[^,]*\), \([^) ]*\) *):\2.\1):g' \
>> -e 's:bb.data.\(getVar([^,]*\), \([^) ]*\) *):\2.\1):g' \
>> -i `grep -ril bb.data *`
>
> Why ignore case?
>
> I suggest running the grep first redirected to the file, then editing
> the contents to ensure you don't get things like CHANGELOG and probably
> be careful with the Documentation.
>
> The groups look sane to me.
>
> The only other thing I'd make sure to try and watch (not necessarily
> handle) are multi-line bb.data.[sg]et(Flag)? calls. I suspect there are
> few enough of them, if any, that they could be managed by hand.

Heh, too bad bitbake doesn't know how to emit metadata back out from
its ast. This seems like it'd be an ideal case for writing a custom
2to3 fixer rather than using sed. It would catch the multi-line case
you mention, since it lets you specify grammatical patterns against
the python parse tree and do transforms against it.
-- 
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics




More information about the Openembedded-core mailing list