[oe] getVar. setVar, "d", etc.

Rich Pixley rich.pixley at palm.com
Tue Feb 5 23:13:16 UTC 2008


Richard Purdie wrote:
> On Mon, 2008-02-04 at 18:37 -0800, Rich Pixley wrote:
>   
>> Let me try this again.
>>
>> I have a class.  My class is listed in the INHERIT in my local.conf.
>>
>> My class intends to set a variable, SUBMISSION_busybox, which will be
>> used by a bb file as "PR = ${SUBMISSION_busybox}".
>>
>> I'm setting the variable via setVar, and pretty printing "d" shows me
>> that it's in p.dict.
>>
>> However, attempting to bitbake yields:
>>
>> NOTE: <type 'exceptions.SyntaxError'>:EOL while scanning single-quoted
>> string (<string>, line 1) while evaluating:
>> ${@base_set_filespath([
>> "/home/rich/projects/nova/oe-bom/nova/oe/packages/busybox/busybox-1.7.2-${SUBMISSION_busybox}",
>> "/home/rich/projects/nova/oe-bom/nova/oe/packages/busybox/busybox-1.7.2",
>> "/home/rich/projects/nova/oe-bom/nova/oe/packages/busybox/busybox",
>> "/home/rich/projects/nova/oe-bom/nova/oe/packages/busybox/files",
>> "/home/rich/projects/nova/oe-bom/nova/oe/packages/busybox" ], d)}
>> ERROR: Error in executing:
>> ERROR: Exception:<type 'exceptions.SyntaxError'> Message:EOL while
>> scanning single-quoted string (<string>, line 1)
>> ERROR: Printing the environment of the function
>>     
> The problem is the point at which some variables are accessed. How,
> where and when your class sets this variable SUBMISSION_busybox is very
> important.
>
> In this case bitbake is trying to evaluate FILESPATH set in
> base.bbclass. To do this it references the ${PF} variable which in turn
> contains ${PR} which in turn contains ${SUBMISSION_busybox}. At this
> point ${SUBMISSION_busybox} isn't set so it errors
>> And I'm totally confused.  It would appear to me as though
>> SUBMISSION_busybox isn't being found and thus isn't being expanded.  I'm
>> assuming that my understanding of the various "d"'s is my conceptual
>> weakness here.
>>     
> At the point in time where bitbake is trying to evaluate FILESPATH which
> indirectly includes SUBMISSION_busybox, SUBMISSION_busybox isn't in d.
Thank you for your analysis.  That's about the conclusion that I'd come 
to as well.

However, with judicious use of print commands I can see that 
SUBMISSION_busybox is indeed set in d at that time, even in d which has 
"${PN}" set to "busybox" but apparently either that's not the right d, 
or it's not set soon enough, or something else it going on that I don't 
understand.

Using:

def set_submissions(d):
    import bb
    import pprint   
    bb.data.setVar('SUBMISSION_busybox', '%s' % 1, d)
    print "d.dict is"
    pp = pprint.PrettyPrinter(indent=4);
    pp.pprint(d.dict)
    print "\n"
    return "garbage"

garbage := "${@set_submissions(d)}"

Before the FILESPATH assignment in base.bbclass, I can see that 
SUBMISSION_busybox is being set, and it's being set in the current d, 
but it's still not being expanded.

Any hints?

--rich



More information about the Openembedded-devel mailing list