diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-02-25 09:42:28 -0700 |
---|---|---|
committer | Chris Larson <chris_larson@mentor.com> | 2010-02-26 09:12:55 -0700 |
commit | 74f50fbca194c9c72bd2a540f4b9de458cb08e2d (patch) | |
tree | 797aca668fdaf799520f2722b9dfd4a01290a287 /doc | |
parent | 5b6ccb16c6e71e23dac6920cd2df994d67c2587b (diff) | |
download | bitbake-74f50fbca194c9c72bd2a540f4b9de458cb08e2d.tar.gz |
Implement ??= operator
??= is a lazy, conditional assignment. Whereas a ?= immediately assigns to
the variable if the variable has not yet been set, ??= does not apply the
default assignment until the end of the parse. As a result, the final ??= for
a given variable is used, as opposed to the first as in ?=.
Note that the initial implementation relies upon finalise() to apply the
defaults, so a "bitbake -e" without specifying a recipe will not show the
defaults as set by ??=. Moving application of the default into getVar adds
too large a performance hit. We may want to revisit this later.
Signed-off-by: Chris Larson <chris_larson@mentor.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/manual/usermanual.xml | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/doc/manual/usermanual.xml b/doc/manual/usermanual.xml index c3403449f..450ac77d7 100644 --- a/doc/manual/usermanual.xml +++ b/doc/manual/usermanual.xml @@ -91,7 +91,13 @@ share common metadata between many packages.</para></listitem> <section> <title>Setting a default value (?=)</title> <para><screen><varname>A</varname> ?= "aval"</screen></para> - <para>If <varname>A</varname> is set before the above is called, it will retain it's previous value. If <varname>A</varname> is unset prior to the above call, <varname>A</varname> will be set to <literal>aval</literal>.</para> + <para>If <varname>A</varname> is set before the above is called, it will retain it's previous value. If <varname>A</varname> is unset prior to the above call, <varname>A</varname> will be set to <literal>aval</literal>. Note that this assignment is immediate, so if there are multiple ?= assignments to a single variable, the first of those will be used.</para> + </section> + <section> + <title>Setting a default value (??=)</title> + <para><screen><varname>A</varname> ??= "somevalue"</screen></para> + <para><screen><varname>A</varname> ??= "someothervalue"</screen></para> + <para>If <varname>A</varname> is set before the above, it will retain that value. If <varname>A</varname> is unset prior to the above, <varname>A</varname> will be set to <literal>someothervalue</literal>. This is a lazy version of ??=, in that the assignment does not occur until the end of the parsing process, so that the last, rather than the first, ??= assignment to a given variable will be used.</para> </section> <section> <title>Immediate variable expansion (:=)</title> |