From 6e6b7e10e04fdb94b59bd2ead3ccb79c899c7458 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Wed, 21 Sep 2016 15:30:14 -0700 Subject: bitbake-user-manual: Added examples for using overrides with functions. Fixes [YOCTO #10296] This adds some bits clarifying you can append and prepend to functions. Added a bit to the introduction paragraph of the "Appending and Prepending (Override Style Syntax)" section to note that you can do this. Referenced some new examples. In the "Shell Functions" section I added an example. In the "BitBake Style Python Functions" section I also added an example. Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- .../bitbake-user-manual-metadata.xml | 117 ++++++++++++++++++--- 1 file changed, 104 insertions(+), 13 deletions(-) (limited to 'doc') diff --git a/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml b/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml index 47691af3b..82094b85c 100644 --- a/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml +++ b/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml @@ -277,6 +277,15 @@ override syntax. + + + It is also possible to append and prepend to shell + functions and BitBake-style Python functions. + See the + "Shell Functions" and + "BitBake Style Python Functions + sections for examples. +
@@ -1090,6 +1099,56 @@ such as dash. You should not use Bash-specific script (bashisms). + + + Overrides and override-style operators like + _append and + _prepend can also be applied to + shell functions. + Most commonly, this application would be used in a + .bbappend file to modify functions in + the main recipe. + It can also be used to modify functions inherited from + classes. + + + + As an example, consider the following: + + do_foo() { + bbplain first + fn + } + + fn_prepend() { + bbplain second + } + + fn() { + bbplain third + } + + do_foo_append() { + bbplain fourth + } + + The output from do_foo + results in the following: + + recipename do_foo: first + recipename do_foo: second + recipename do_foo: third + recipename do_foo: fourth + + + Overrides and override-style operators can + be applied to any shell function, not just + tasks. + + You can use the bitbake -e recipename + command to view the final assembled function + after all overrides have been applied. +
@@ -1114,19 +1173,51 @@ Also in these types of functions, the datastore ("d") is a global variable and is always automatically available. - - - - Variable expressions (e.g. ${X}) are no - longer expanded within Python functions. - This behavior is intentional in order to allow you to freely - set variable values to expandable expressions without having - them expanded prematurely. - If you do wish to expand a variable within a Python function, - use d.getVar("X", True). - Or, for more complicated expressions, use - d.expand(). - + + Variable expressions (e.g. ${X}) + are no longer expanded within Python functions. + This behavior is intentional in order to allow you + to freely set variable values to expandable expressions + without having them expanded prematurely. + If you do wish to expand a variable within a Python + function, use d.getVar("X", True). + Or, for more complicated expressions, use + d.expand(). + + + + + Similar to shell functions, you can also apply overrides + and override-style operators to BitBake-style Python + functions. + + + + As an example, consider the following: + + python do_foo_prepend() { + bb.plain("first") + } + + python do_foo() { + bb.plain("second") + } + + python do_foo_append() { + bb.plain("third") + } + + The output from do_foo results + in the following: + + recipename do_foo: first + recipename do_foo: second + recipename do_foo: third + + You can use the bitbake -e recipename + command to view the final assembled function + after all overrides have been applied. +
-- cgit 1.2.3-korg