Difference between revisions of "Bitbake Cheat Sheet"

From eLinux.org
Jump to: navigation, search
m (Fix broken link to bitbake manual)
 
(14 intermediate revisions by 5 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/  (note that this
+
longer descriptions, see the bitbake manual at: https://docs.yoctoproject.org/bitbake/2.0/index.html
link goes to the OpenEmbedded version of the bitbake manual, which is a version from 2006 as of this writing. A separate (yocto-specific?) bitbake manual is included in source form in the yocto project source directory, under bitbake/doc.)
+
 
 
== 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 33: Line 33:
 
{| border="1" cellspacing="0" cellpadding="5"
 
{| border="1" cellspacing="0" cellpadding="5"
 
|-bgcolor="#80c0d0"
 
|-bgcolor="#80c0d0"
! User interface
+
! style="width: 200px;" | User interface
 
! Type
 
! Type
 
! NOTES
 
! NOTES
 
|-
 
|-
|bitbake <nothing> ''or'' "bitbake -u knotty"
+
|bitbake <recipe-or-image> ''or''<br> "bitbake -u knotty <recipe-or-image>"
 
|scrolling text interface
 
|scrolling text interface
 
|This is the default user interface
 
|This is the default user interface
 
|-
 
|-
|bitbake -u knotty2
+
|bitbake -u ncurses <recipe-or-image>
|fancier text-based interface
 
|This interface updates concurrently processed recipes in-place on text lines
 
|-
 
|bitbake -u ncurses
 
 
|text-window based interface
 
|text-window based interface
 
|I couldn't figure out how to control or exit this interface
 
|I couldn't figure out how to control or exit this interface
Line 51: Line 47:
 
|bitbake -u hob
 
|bitbake -u hob
 
|graphical interface
 
|graphical interface
|
+
|This is a full graphical interface which includes selecting machine, distro, etc. and performing a build
 
|-
 
|-
|bitbake -u goggle
+
|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 135: Line 132:
 
|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)
 
Flag values appear to be used exclusively with task definitions (i.e. do_sometask)
 +
|-
 +
|
 +
inherit externalsrc
 +
EXTERNALSRC = "/some/path"
 +
# EXTERNALSRC_BUILD = "/some/path"
 +
|Fetch source from /some/path
 +
|You can place this at the bottom of a .bb or .bbappend file to override where the source will be fetched from. This is very convenient if you are currently working on the source code. Depending on the type of build (eg, 'inherit module' for out of tree Linux kernel modules) you may or may not need to set EXTERNALSRC_BUILD.
 
|}
 
|}
  
Line 152: Line 156:
 
|see: http://www.crashcourse.ca/wiki/index.php/OE_bitbake-env_utility
 
|see: http://www.crashcourse.ca/wiki/index.php/OE_bitbake-env_utility
 
|-
 
|-
|bitbake -u depexp
+
|bitbake -g -u taskexp <recipe-or-image-name>
 
|Show dependency information in a graphical interface
 
|Show dependency information in a graphical interface
 
|
 
|
 
+
|}
}
 

Latest revision as of 02:06, 20 October 2022

Here are some quick notes on bitbake syntax and rules. For an exhaustive list of functionality, and longer descriptions, see the bitbake manual at: https://docs.yoctoproject.org/bitbake/2.0/index.html

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"
VAR_string1 = "bar"

alternate/override value if string1 is listed in OVERRIDES, use "bar" for value of VAR, otherwise use "foo"
OVERRIDES="string1:string2"

VAR = "foo"
VAR_append_string1 = " bar"

conditional append if string1 is in OVERRIDES, then append " bar" to the value of VAR
BBVERSIONS="1.0 1.8 string"

VAR="foo"
VAR_string="bar"

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)

inherit externalsrc
EXTERNALSRC = "/some/path"
# EXTERNALSRC_BUILD = "/some/path"
Fetch source from /some/path You can place this at the bottom of a .bb or .bbappend file to override where the source will be fetched from. This is very convenient if you are currently working on the source code. Depending on the type of build (eg, 'inherit module' for out of tree Linux kernel modules) you may or may not need to set EXTERNALSRC_BUILD.

Additional bitbake-related commands

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 taskexp <recipe-or-image-name> Show dependency information in a graphical interface