[yocto] which yocto doc explains bitbake assignment variations?
Rudolf Streif
rudolf.streif at linux.com
Thu Mar 29 14:55:34 PDT 2012
Robert,
I don't think that the YP manuals do. That's more Bitbake. However, here is
some copied out of my docs. (List excuse the formatting. It's copied from
an HTML page.)
-
*Variable Setting (=)*
Set a variable by assigning it a value using the *=* sign. Values must
be surrounded by double quotes.
*
VAR = "value"
*
In this example, *VAR* is set to *value*.
-
*Early Default Value Assignment (?=)*
A variable can be early-assigned a default value using the *?=* assignment
operator:
*
A ?= "1"
B ?= "2"
B ?= "3"
*
In this example *A* will contain *1* if it was not previously set. *B* will
contain *2* because the *?=* assignment operator is immediate meaning
that if there are multiple *?=* assignments to a single variable, the
first one will be used.
-
*Late Default Value Assignment (??=)*
A variable can be late-assigned a default value using the *??=* assignment
operator:
*
A ??= "1"
B ??= "2"
B ??= "3"
*
In this example *A* will contain *1* if it was not previously set. *B* will
contain *3* because the *??=* assignment operator is a late or lazy
assignment operator and assignment will not take place until the end of the
parsing process. If there are multiple *??=* assignments to a single
variable, the last one will be used.
-
*Variable Expansion*
Bitbake supports referencing a variables content similar to shell
scripting.
*
A = "jumps over"
B = "The quick brown fox ${A} the lazy dog."
echo $B
*
This results in the the text *The quick brown fox jumps over the lazy
dog.* printed to the console.
-
*Immediate Variable Expansion (:=)*
Typically, Bitbake expands a variable when it is used. The *:=* assignment
operator however expands the variable immediately when it is assigned.
*
A = "11"
B = "B:${A}"
A = "22"
C := "C:${A}"
echo $C $B
*
This results in *C:22 B:22* printed to the console since the content of *
A* is expanded immediately on assignment to variable *C*. Variable *B* did
not get expanded until it was actually used in the *echo*statement.
-
*Appending (+=) and Prepending (=+)*
The *+=* and *=+* append and prepend variables respectively while adding
a single space between the values.
*
A = "12"
A += "34"
B = "89"
B =+ "67"
*
This results in variable *A* containing *12 34* and variable *B*
containing *67 89*.
-
*Appending (.=) and Prepending (=.) without Spaces*
The *.=* and *=.* work like the above appending and prepending operators
however without placing an additional space between the values.
*
A = "12"
A .= "34"
B = "89"
B =. "67"
*
This results in variable *A* containing *1234* and variable *B*
containing *6789*.
Rudi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20120329/89ab02af/attachment.html>
More information about the yocto
mailing list