[OE-core] subtle weirdness when you combine "_append" with "+="?

Ulf Magnusson ulfalizer at gmail.com
Tue Aug 16 15:56:09 UTC 2016


On Tue, Aug 16, 2016 at 5:49 PM, Robert P. J. Day <rpjday at crashcourse.ca> wrote:
> On Tue, 16 Aug 2016, Ulf Magnusson wrote:
>
>> On Tue, Aug 16, 2016 at 4:02 PM, Robert P. J. Day <rpjday at crashcourse.ca> wrote:
>> >
>> >   was about to submit a small number of patches to clean up redundancy
>> > when people combine "_append" with "+=" (because it offends my
>> > delicate sensibilities), and ran across this in oe-core,
>> > unfs3_0.9.22.r497.bb:
>> >
>> >   DEPENDS_append_class-nativesdk += "flex-nativesdk"
>> >
>> > uh, what?
>> >
>> >   most of the time, i assume the above doesn't hurt, it's just ...
>> > silly. but normally, with "_append", you *need* to add the leading
>> > space explicitly, and that's not being done above. so does that mean
>> > that combining "_append" with "+=" *does* generate a leading space?
>> > that just makes my head hurt -- the possibility that "_append" is
>> > being used in a way that normally makes it fail, only to have "+="
>> > step in and save the day. at which point "_append" saves processing
>> > that until the end of parsing? yeesh.
>> >
>> >   thoughts?
>>
>> By the point the += is handled, the override won't have been interpreted
>> yet. My guess is that += fetches the value of the variable
>> "DEPENDS_append_class-nativesdk", gets back the empty string, and
>> adds a space followed by "flex-nativesdk" to that.
>>
>> The resulting " flex-nativesdk" is then interpreted as usual when the
>> overrides are handled.
>>
>> You might like the note I added to
>> https://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#override-style-operation-advantages
>> by the way. :)
>
>   that note is pretty much what i've been whining about for a long
> time. :-) in any event, when one sees something like the above:

The intent of the note was to discourage use of '+=' together with _append,
because it's redundant and potentially confusing. Do you think it fails
(even in context)? :/

>
>   DEPENDS_append_class-nativesdk += "flex-nativesdk"
>
> what is the *proper* cleanup?

I'd say the following:

DEPENDS_append_class-nativesdk = " flex-nativesdk"

Cheers,
Ulf



More information about the Openembedded-core mailing list