Difference between revisions of "Bitbake Cheat Sheet"
| (16 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
Here are some quick notes on bitbake syntax and rules. For an exhaustive list of functionality, and | Here are some quick notes on bitbake syntax and rules. For an exhaustive list of functionality, and | ||
| − | longer descriptions, see the bitbake manual at: http://docs.openembedded.org/bitbake/html/ | + | longer descriptions, see the bitbake manual at: http://docs.openembedded.org/bitbake/html/ |
| − | link goes to the OpenEmbedded version of the bitbake manual, which is a version from 2006 as of this writing. A separate | + | |
| + | Note that this link goes to the OpenEmbedded version of the bitbake manual, which is a version from 2006 as of this writing. A separate bitbake manual is included in source form in the yocto project source directory, under bitbake/doc. The yocto version of the manual is more recent, but I can't find a published version of it to link to. | ||
| + | |||
== Command Line options == | == Command Line options == | ||
Here are a few commonly-used command line options. | Here are a few commonly-used command line options. | ||
| Line 27: | Line 29: | ||
|- | |- | ||
| -g <recipe>||output dependency tree in graphviz format | | -g <recipe>||output dependency tree in graphviz format | ||
| + | |} | ||
| + | |||
| + | == User interfaces == | ||
| + | Bitbake can be used with several different user interfaces. Here are some options: | ||
| + | {| border="1" cellspacing="0" cellpadding="5" | ||
| + | |-bgcolor="#80c0d0" | ||
| + | ! style="width: 200px;" | User interface | ||
| + | ! Type | ||
| + | ! NOTES | ||
| + | |- | ||
| + | |bitbake <recipe-or-image> ''or''<br> "bitbake -u knotty <recipe-or-image>" | ||
| + | |scrolling text interface | ||
| + | |This is the default user interface | ||
| + | |- | ||
| + | |bitbake -u ncurses <recipe-or-image> | ||
| + | |text-window based interface | ||
| + | |I couldn't figure out how to control or exit this interface | ||
| + | |- | ||
| + | |bitbake -u hob | ||
| + | |graphical interface | ||
| + | |This is a full graphical interface which includes selecting machine, distro, etc. and performing a build | ||
| + | |- | ||
| + | |bitbake -u goggle <recipe-or-image> | ||
| + | |simple graphical interface | ||
| + | |This is a simple graphical wrapper over the streaming text output of bitbake. It's nice in that it shows collapsible trees for the logs for sub-tasks for each recipe. | ||
|} | |} | ||
| Line 56: | Line 83: | ||
|- | |- | ||
|VAR =. "foo"||prepend without space|| | |VAR =. "foo"||prepend without space|| | ||
| + | |- | ||
| + | |VAR_append = "foo" ||append without space|| | ||
|- | |- | ||
|OVERRIDES="string1:string2"<BR> | |OVERRIDES="string1:string2"<BR> | ||
| Line 65: | Line 94: | ||
|OVERRIDES="string1:string2"<BR> | |OVERRIDES="string1:string2"<BR> | ||
VAR = "foo"<BR> | VAR = "foo"<BR> | ||
| − | + | VAR_append_string1 = " bar" | |
| − | |conditional | + | |conditional append |
|if string1 is in OVERRIDES, then append " bar" to the value of VAR | |if string1 is in OVERRIDES, then append " bar" to the value of VAR | ||
|- | |- | ||
| Line 73: | Line 102: | ||
VAR_string="bar" | VAR_string="bar" | ||
|range-specific conditional | |range-specific conditional | ||
| − | |If the version of the package is in the specified range, | + | |If the version of the package is in the specified range (1.0-1.8 in this example), then perform an override on the indicated variable |
|- | |- | ||
|VAR = "foo ${@<line-of-python-code>}" | |VAR = "foo ${@<line-of-python-code>}" | ||
| Line 104: | Line 133: | ||
|associate a subsidiary flag value to a variable | |associate a subsidiary flag value to a variable | ||
|a few subsidiary flag value names are well-defined: "dirs", "cleandirs", "noexec", "nostamp", "fakeroot", "umask", "deptask", "rdeptask", "recdeptask", "recrdeptask" | |a few subsidiary flag value names are well-defined: "dirs", "cleandirs", "noexec", "nostamp", "fakeroot", "umask", "deptask", "rdeptask", "recdeptask", "recrdeptask" | ||
| + | Flag values appear to be used exclusively with task definitions (i.e. do_sometask) | ||
| + | |} | ||
| + | |||
| + | == Additional bitbake-related commands == | ||
| + | {| border="1" cellspacing="0" cellpadding="5" | ||
| + | |-bgcolor="#80c0d0" | ||
| + | ! Command | ||
| + | ! Description | ||
| + | ! NOTES | ||
| + | |- | ||
| + | |bitbake-layers | ||
| + | |Show information about layers and recipes | ||
| + | |Included in the bitbake/bin directory in yocto. | ||
| + | |- | ||
| + | |bitbake-env | ||
| + | |Show invidividual bitbake variable values | ||
| + | |see: http://www.crashcourse.ca/wiki/index.php/OE_bitbake-env_utility | ||
| + | |- | ||
| + | |bitbake -g -u depexp <recipe-or-image-name> | ||
| + | |Show dependency information in a graphical interface | ||
| + | | | ||
|} | |} | ||
Latest revision as of 00:17, 21 December 2012
Here are some quick notes on bitbake syntax and rules. For an exhaustive list of functionality, and longer descriptions, see the bitbake manual at: http://docs.openembedded.org/bitbake/html/
Note that this link goes to the OpenEmbedded version of the bitbake manual, which is a version from 2006 as of this writing. A separate bitbake manual is included in source form in the yocto project source directory, under bitbake/doc. The yocto version of the manual is more recent, but I can't find a published version of it to link to.
Contents |
Command Line options
Here are a few commonly-used command line options.
| Option | Meaning |
|---|---|
| -c <task> | execute <task> for the image or recipe being built. ex: bitbake -c fetch busybox.
Some of the possible tasks are: fetch, configure, compile, package, clean |
| -f | force execution of the operation, even if not required |
| -v | show verbose output |
| -DDD | show lots of debug information |
| -s | show recipe version information |
| --help | get usage help |
| -c listtasks <image-or-recipe-name> | show the tasks associated with an image or individual recipe |
| -g <recipe> | output dependency tree in graphviz format |
User interfaces
Bitbake can be used with several different user interfaces. Here are some options:
| User interface | Type | NOTES |
|---|---|---|
| bitbake <recipe-or-image> or "bitbake -u knotty <recipe-or-image>" |
scrolling text interface | This is the default user interface |
| bitbake -u ncurses <recipe-or-image> | text-window based interface | I couldn't figure out how to control or exit this interface |
| bitbake -u hob | graphical interface | This is a full graphical interface which includes selecting machine, distro, etc. and performing a build |
| bitbake -u goggle <recipe-or-image> | simple graphical interface | This is a simple graphical wrapper over the streaming text output of bitbake. It's nice in that it shows collapsible trees for the logs for sub-tasks for each recipe. |
.bb file syntax
This table lists some of the syntax found in recipe (.bb) files.
| Syntax | Meaning | NOTES |
|---|---|---|
| VAR = "foo" | simple assignment | |
| VAR ?= "foo" | assign if no other value is already assigned (default assignment) | |
| VAR ??=foo | weak default assignment | takes lower precedence than ?= |
| VAR = "stuff ${OTHER_VAR} more" | variable expansion | OTHER_VAR expanded at time of reference to VAR |
| VAR := "stuff ${OTHER_VAR} more" | immediate variable expansion | OTHER_VAR expanded at time of parsing this line |
| VAR += "foo" | append with space | |
| VAR =+ "foo" | prepend with space | |
| VAR .= "foo" | append without space | |
| VAR =. "foo" | prepend without space | |
| VAR_append = "foo" | append without space | |
| OVERRIDES="string1:string2" VAR = "foo" |
alternate/override value | if string1 is listed in OVERRIDES, use "bar" for value of VAR, otherwise use "foo" |
| OVERRIDES="string1:string2" VAR = "foo" |
conditional append | if string1 is in OVERRIDES, then append " bar" to the value of VAR |
| BBVERSIONS="1.0 1.8 string" VAR="foo" |
range-specific conditional | If the version of the package is in the specified range (1.0-1.8 in this example), then perform an override on the indicated variable |
| VAR = "foo ${@<line-of-python-code>}" | python code expansion | ex: VAR = "the date is: ${@time.strftime(’%Y%m%d’,time.gmtime())}" |
| include foo | include file | include file named "foo", search BBPATH |
| require [<path>]foo | require file | include file named "foo", failing if not found exactly where specified |
| inherit foo | inherit classes | include definitions from foo.bbclass |
do_sometask() {<shell code> } |
define a task using shell code | |
python do_sometask {<python code> } |
define a task using python code | |
| addtask sometask (before|after) other_task | add a task | adds a defined task to the list of tasks, with the ordering specified. Zero or more 'before' or 'after' clauses can be used. |
| VAR[some_flag]="foo" | associate a subsidiary flag value to a variable | a few subsidiary flag value names are well-defined: "dirs", "cleandirs", "noexec", "nostamp", "fakeroot", "umask", "deptask", "rdeptask", "recdeptask", "recrdeptask"
Flag values appear to be used exclusively with task definitions (i.e. do_sometask) |
| Command | Description | NOTES |
|---|---|---|
| bitbake-layers | Show information about layers and recipes | Included in the bitbake/bin directory in yocto. |
| bitbake-env | Show invidividual bitbake variable values | see: http://www.crashcourse.ca/wiki/index.php/OE_bitbake-env_utility |
| bitbake -g -u depexp <recipe-or-image-name> | Show dependency information in a graphical interface |