]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: bitbake-user-manual: Updated the "inherit Directive" section.
authorScott Rifenbark <srifenbark@gmail.com>
Tue, 22 Mar 2016 20:35:28 +0000 (13:35 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 23 Mar 2016 21:55:38 +0000 (21:55 +0000)
Fixes [YOCTO #9283]

Updated the description to document conditional inherits.  Provided
several examples.

(Bitbake rev: 07f97f4d913cf1c8233995152105fff6c6c7b9a0)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml

index b3e7dd8d9e68cda0a0533b69bc457e2739f6be30..862a6bddfe69aac889367c31a19939af28fc61c3 100644 (file)
                     after the "inherit" statement.
                 </note>
             </para>
+
+            <para>
+                If necessary, it is possible to inherit a class
+                conditionally by using
+                a variable expression after the <filename>inherit</filename>
+                statement.
+                Here is an example:
+                <literallayout class='monospaced'>
+     inherit ${VARNAME}
+                </literallayout>
+                If <filename>VARNAME</filename> is going to be set, it needs
+                to be set before the <filename>inherit</filename> statement
+                is parsed.
+                One way to achieve a conditional inherit in this case is to use
+                overrides:
+                <literallayout class='monospaced'>
+     VARIABLE = ""
+     VARIABLE_someoverride = "myclass"
+                </literallayout>
+            </para>
+
+            <para>
+                Another method is by using anonymous Python.
+                Here is an example:
+                <literallayout class='monospaced'>
+     python () {
+         if condition == value:
+             d.setVar('VARIABLE', 'myclass')
+         else:
+             d.setVar('VARIABLE', '')
+     }
+                </literallayout>
+            </para>
+
+            <para>
+                Alternatively, you could use an in-line Python expression
+                in the following form:
+                <literallayout class='monospaced'>
+     inherit ${@'classname' if condition else ''}
+     inherit ${@functionname(params)}
+                </literallayout>
+                In all cases, if the expression evaluates to an empty
+                string, the statement does not trigger a syntax error
+                because it becomes a no-op.
+            </para>
         </section>
 
         <section id='include-directive'>