From cba4a8b80dbd1b888b33be5349188a853a69c4ef Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Mon, 14 Apr 2014 09:34:39 -0700 Subject: bitbake: bitbake-user-manual-metadata.xml: New section on anonymous Python functions Per Paul Eggleton's suggestion, I added a new section on anonymous Python functions into the "Functions" section. I also updated the intro text to account for the added type of functions. (Bitbake rev: ea0c6d0a47b4b8e399554fbf719e563cc63e2775) Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- .../bitbake-user-manual-metadata.xml | 42 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'bitbake/doc') diff --git a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml index 365c4b8f97..5304e40ce7 100644 --- a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml +++ b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml @@ -683,7 +683,7 @@ As with most languages, functions are the building blocks that are used to build up operations into tasks. - BitBake supports three types of functions: + BitBake supports these types of functions: Shell Functions: Functions written in shell script and executed either @@ -697,6 +697,10 @@ Python Functions: Functions written in Python and executed by Python. + Anonymous Python Functions: + Python functions executed automatically during + parsing. + Regardless of the type of function, you can only define them in class (.bbclass) @@ -793,6 +797,39 @@ +
+ Anonymous Python Functions + + + Sometimes it is useful to run some code during + parsing to set variables or to perform other operations + programmatically. + To do this, you can define an anonymous Python function. + Here is an example that conditionally sets a + variable based on the value of another variable: + + python __anonymous () { + if d.getVar('SOMEVAR', True) == 'value': + d.setVar('ANOTHERVAR', 'value2') + } + + The "__anonymous" function name is optional, so the + following example is functionally equivalent to the above: + + python () { + if d.getVar('SOMEVAR', True) == 'value': + d.setVar('ANOTHERVAR', 'value2') + } + + Because unlike other Python functions anonymous + Python functions are executed during parsing, the + "d" variable within an anonymous Python function represents + the datastore for the entire recipe. + Consequently, you can set variable values here and + those values can be picked up by other functions. + +
+
Flexible Inheritance for Class Functions @@ -817,6 +854,9 @@ respectively, or it can redefine the function completely. However, if it redefines the function, there is no means for it to call the class version of the function. + EXPORT_FUNCTIONS provides a mechanism + that enables the recipe's version of the function to call + the original version of the function. -- cgit v1.2.3-54-g00ecf