bitbake: 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. (Bitbake rev: 6e6b7e10e04fdb94b59bd2ead3ccb79c899c7458) Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
dda8ed0662
commit
7ab459d4b5
|
@ -277,6 +277,15 @@
|
||||||
override syntax.
|
override syntax.
|
||||||
</note>
|
</note>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
It is also possible to append and prepend to shell
|
||||||
|
functions and BitBake-style Python functions.
|
||||||
|
See the
|
||||||
|
"<link linkend='shell-functions'>Shell Functions</link>" and
|
||||||
|
"<link linkend='bitbake-style-python-functions'>BitBake Style Python Functions</link>
|
||||||
|
sections for examples.
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id='removing-override-style-syntax'>
|
<section id='removing-override-style-syntax'>
|
||||||
|
@ -1090,6 +1099,56 @@
|
||||||
such as <filename>dash</filename>.
|
such as <filename>dash</filename>.
|
||||||
You should not use Bash-specific script (bashisms).
|
You should not use Bash-specific script (bashisms).
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Overrides and override-style operators like
|
||||||
|
<filename>_append</filename> and
|
||||||
|
<filename>_prepend</filename> can also be applied to
|
||||||
|
shell functions.
|
||||||
|
Most commonly, this application would be used in a
|
||||||
|
<filename>.bbappend</filename> file to modify functions in
|
||||||
|
the main recipe.
|
||||||
|
It can also be used to modify functions inherited from
|
||||||
|
classes.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
As an example, consider the following:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
do_foo() {
|
||||||
|
bbplain first
|
||||||
|
fn
|
||||||
|
}
|
||||||
|
|
||||||
|
fn_prepend() {
|
||||||
|
bbplain second
|
||||||
|
}
|
||||||
|
|
||||||
|
fn() {
|
||||||
|
bbplain third
|
||||||
|
}
|
||||||
|
|
||||||
|
do_foo_append() {
|
||||||
|
bbplain fourth
|
||||||
|
}
|
||||||
|
</literallayout>
|
||||||
|
The output from <filename>do_foo</filename>
|
||||||
|
results in the following:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
recipename do_foo: first
|
||||||
|
recipename do_foo: second
|
||||||
|
recipename do_foo: third
|
||||||
|
recipename do_foo: fourth
|
||||||
|
</literallayout>
|
||||||
|
<note>
|
||||||
|
Overrides and override-style operators can
|
||||||
|
be applied to any shell function, not just
|
||||||
|
<link linkend='tasks'>tasks</link>.
|
||||||
|
</note>
|
||||||
|
You can use the <filename>bitbake -e</filename> <replaceable>recipename</replaceable>
|
||||||
|
command to view the final assembled function
|
||||||
|
after all overrides have been applied.
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id='bitbake-style-python-functions'>
|
<section id='bitbake-style-python-functions'>
|
||||||
|
@ -1114,19 +1173,51 @@
|
||||||
Also in these types of functions, the datastore ("d")
|
Also in these types of functions, the datastore ("d")
|
||||||
is a global variable and is always automatically
|
is a global variable and is always automatically
|
||||||
available.
|
available.
|
||||||
</para>
|
<note>
|
||||||
|
Variable expressions (e.g. <filename>${X}</filename>)
|
||||||
|
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 <filename>d.getVar("X", True)</filename>.
|
||||||
|
Or, for more complicated expressions, use
|
||||||
|
<filename>d.expand()</filename>.
|
||||||
|
</note>
|
||||||
|
</para>
|
||||||
|
|
||||||
<note>
|
<para>
|
||||||
Variable expressions (e.g. <filename>${X}</filename>) are no
|
Similar to shell functions, you can also apply overrides
|
||||||
longer expanded within Python functions.
|
and override-style operators to BitBake-style Python
|
||||||
This behavior is intentional in order to allow you to freely
|
functions.
|
||||||
set variable values to expandable expressions without having
|
</para>
|
||||||
them expanded prematurely.
|
|
||||||
If you do wish to expand a variable within a Python function,
|
<para>
|
||||||
use <filename>d.getVar("X", True)</filename>.
|
As an example, consider the following:
|
||||||
Or, for more complicated expressions, use
|
<literallayout class='monospaced'>
|
||||||
<filename>d.expand()</filename>.
|
python do_foo_prepend() {
|
||||||
</note>
|
bb.plain("first")
|
||||||
|
}
|
||||||
|
|
||||||
|
python do_foo() {
|
||||||
|
bb.plain("second")
|
||||||
|
}
|
||||||
|
|
||||||
|
python do_foo_append() {
|
||||||
|
bb.plain("third")
|
||||||
|
}
|
||||||
|
</literallayout>
|
||||||
|
The output from <filename>do_foo</filename> results
|
||||||
|
in the following:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
recipename do_foo: first
|
||||||
|
recipename do_foo: second
|
||||||
|
recipename do_foo: third
|
||||||
|
</literallayout>
|
||||||
|
You can use the <filename>bitbake -e</filename> <replaceable>recipename</replaceable>
|
||||||
|
command to view the final assembled function
|
||||||
|
after all overrides have been applied.
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id='python-functions'>
|
<section id='python-functions'>
|
||||||
|
|
Loading…
Reference in New Issue