From ea0c6d0a47b4b8e399554fbf719e563cc63e2775 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Mon, 14 Apr 2014 09:34:39 -0700 Subject: 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. Signed-off-by: Scott Rifenbark --- .../bitbake-user-manual-metadata.xml | 42 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml b/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml index 365c4b8f9..5304e40ce 100644 --- a/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml +++ b/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 1.2.3-korg