ipk package files can be unpackaged with the `ar` command. Ex: `ar x <path to ipk file>` You can also inspect the files inside an ipk and get other information with the dpkg command if your distribution has it.

ipk package files can be unpackaged with the `ar` command. Ex: `ar x <path to ipk file>` You can also inspect the files inside an ipk and get other information with the dpkg command if your distribution has it.

Old Wiki Faq

The old wiki installation seems to have eaten the FAQ page. Let's try to restore some of the information from web.archive.org, this will need to be compared with the last known-good version from google (mark all text on that page to make it visible). Content still to be moved follows

2. How can I make bitbake to use a specific version of <tool>?

3. How can I make bitbake use proxychains when doing cvs operations?

4. What is the easiest way to convert Debian ARM packages to ipkg's (if size doesn't matter)?

mv foo.deb foo.ipk

5. How do I add a package to OE?

Most of the time adding a package to OE will not be as easy as 1-2-3. Many software developers do not cross-compile their packages and are generally unaware of good design decisions that facilitate or break cross-compilation.

6. How can I do a recursive make?

Implement a structure along the following lines.

do_compile {
for i in dir; oe_runmake ...; done
}

7. How do I set a variable according to the kernel version of the package being built?

You also need to make sure your kernel has the needed support. From the codesourcery faq, you need the following:

CONFIG_EABI must be enabled

Kernel must include support for NPTL

kernel versions earlier than 2.6.17 should be avoided

9. What is NPTL and how do I use it in OE?

NPTL is the Native POSIX Thread Library which is a software feature that enables the Linux kernel to run programs written to use POSIX Threads very efficiently. It is meant to replace an older implementation named Linuxthreads.

11. How do I add additional packages to a bootstrap-image generated image?

You can add packages to your build by setting the MACHINE_EXTRA_RDEPENDS or DISTRO_EXTRA_RDEPENDS in a conf file. Note, you must rebuild task-base after changing these variables (bitbake task-base -crebuild) as bitbake has no way of knowing task-base has changed. See [3] for a more detailed explanation.

12. What order are conf files parsed for variable assignment?

See oe/conf/bitbake.conf. There should be a section that looks something like:

include conf/site.conf
include conf/auto.conf
include conf/local.conf
include conf/build/${BUILD_SYS}.conf
include conf/target/${TARGET_SYS}.conf
include conf/machine/${MACHINE}.conf
include conf/distro/${DISTRO}.conf
include conf/documentation.conf
require conf/sanity.conf

A straight "=" assignment in a machine or distro conf file will overwrite a local.conf setting. Therefore, machine and distro conf files should use the "+=" assignment if it is useful for local.conf to be able to append to a variable.

Build Errors

1. chown error during do_install process

As the OE build process runs a normal using, any install process that changes file ownership or groups must be run using fakeroot. This typically involves the following change in the recipe bb file:

fakeroot do_install () {
oe_runmake "DSTROOT=${D}" install
}

2. Error: autoreconf2.50: unrecognized option --exclude=libtoolize

For some reason the base system's autoreconf is being used instead of the OE version (from autoconf-native)

For me personally this was a problem with my BBPATH having the paths to two branches in it org.openembedded.oz354x and org.openembedded.dev. Removing the one i wasn't trying to build, remove the tmp dir and start bitbake over fixed it.

5. I updated OE.db and now my builds are failing during the glibc compile, complaining about bad symbol definitions. What's wrong?

As of this writing, the version of glibc in the .dev branch of OE calls for a version of binutils it really shouldn't use. A patch has been applied to some DISTRO .confs which forces the "correct" version of binutils (<2.17) for the moment. But if the DISTRO .conf file you're building with isn't patched, a workaround is to add the following line to your local.conf file:

Q: Why is this necessary? I'm using debian, and mmap_min_addr is 4096, but I run qemu all the time, and it seems to work fine.

Debugging OE Builds

OE is not perfect. Due to the size, complexity, rapid pace of development, and lack of maintainers, you will often be presented with an opportunity to debug OE builds :). Fortunately, OE is easy to debug once you know a few tricks:

1. Debugging tips

learn to use interactive bitbake (`bitbake -i`)

The BitBake `--verbose` option will print package dependencies. This is very useful when trying to determine why a package is being built.

The BitBake `-D` option will increase debugging level. Note `-D -D` is also a valid option and can be used to determine what conf files are being used -- look for lines begining with conf.

Sometimes you want to clean a particular package version from your build/tmp/work directory. In this case use

for example `bitbake -c clean gcc-cross-initial-4.1.1`

Note: You have to use the package directory name here from your work directory without the trailing `-rx`. That means there is not an underscore before the package version but a simple dash.
The above is quite useful if you want to clean up a work directory from unwanted versions of the same package.

The ipk file in the directory deploy/ipk is not deleted when you perform a clean on a certain package. So make sure you manually rebuild the cleaned package in order to get an updated ipk or delete the ipk prior to a build.

4. What tasks are available for a package/recipe?

Building an OE package consists of a number of tasks. These tasks can be listed with the OE listtasks task. Each task can be run individually.

6. How do I unpack ipk files?

ipk package files can be unpackaged with the `ar` command. Ex: `ar x <path to ipk file>` You can also inspect the files inside an ipk and get other information with the dpkg command if your distribution has it.