Using Poky - Poky Commands
Bitbake is the tool at the heart of poky and is responsible for parsing the
metadata, generating a list of tasks from it and then executing them. To see a
list of the options it supports look at "bitbake --help".
The most common usage is "bitbake <packagename>" where <packagename> is the name
of the package you wish to build. This often equates to the first part of a .bb
filename so to run the matchbox-desktop_1.2.3.bb file, you might type "bitbake
matchbox-desktop. Several different versions of matchbox-desktop might exist
and bitbake will choose the one selected by the distribution configuration.
Bitbake will also try to execute any dependent tasks first so before building
matchbox-desktop it would build a cross compiler and glibc if not already built.
Bitbake - Package Tasks
Any given package consists of a set of tasks, in most cases the series is fetch,
unpack, patch, configure, compile, install, package, package_write and build.
The default task is "build" and any tasks this depends on are built first hence
the standard bitbake behaviour. There are some tasks such as devshell which are
not part of the default build chain. If you wish to run such a task you can use
the "-c" option to bitbake e.g. "bitbake matchbox-desktop -c devshell".
If you wish to rerun a task you can use the force option "-f". A typical usage
case might look like:
% bitbake matchbox-desktop
[change some source in the WORKDIR for example]
% bitbake matchbox-desktop -c compile -f
% bitbake matchbox-desktop
which would build matchbox-desktop, then recompile it. The final command reruns
all tasks after the compile (basically the packaging tasks) since bitbake will
notice the the compile has been rerun and hence the other tasks also need to run
You can view a list of tasks in a given package by running the listtasks task
e.g. "bitbake matchbox-desktop -c listtasks".
Bitbake - Dependency Graphs
Sometimes it can be hard to see why bitbake wants to build some other packages
before a given package you've specified. "bitbake matchbox-desktop -g" will
create a task-depends.dot file in the current directory. This shows which
packages and tasks depend on which other packages and tasks and it useful for
Bitbake - Advanced Usage
Debug output from bitbake can be seen with the "-D" option and can sometimes
give more information about what bitbake is doing and/or why. Each -D options
increases the logging level, the most common usage being "-DDD".
If you really want to build a specific .bb file, you can use the form "bitbake
-b somepath/somefile.bb". Note that this will not check the dependencies so this
option should only be used when you know the dependencies already exist. You can
specify fragments of the filename and bitbake will see if it can find a unique
The -e option will dump the resulting environment for either the configuration
(no package specified) or for a specific package when specified with the -b
The -k option will cause bitbake to try and continue even if a task fails. It
can be useful for world or unattended builds.
The -s option lists all the versions of packages that bitbake will use.
Running images built by poky under qemu is possible within the poky environment
through the "runqemu" command. It has the form:
runqemu MACHINE IMAGETYPE ZIMAGE IMAGEFILE
MACHINE - the machine to emulate (qemux86, qemuarm, spitz, akita)
IMAGETYPE - the type of image to use (nfs or ext2)
ZIMAGE - location of the kernel binary to use
IMAGEFILE - location of the image file to use
(common options are in brackets)
MACHINE is mandatory, the others are optional.
This assumes a suitable qemu binary is available with support for a given
machine. For further information see scripts/poky-qemu.README.
Copyright (C) 2006-2007 OpenedHand Ltd.