---
title: "Build configuration"
---

# Build configuration

The build's settings as BitBake sees them, with the statement that decided each, changes written to local.conf or the product distribution after a confirmation, machines and distributions, and configuration fragments.

**Open Build Configuration** opens the build's configuration editor, from the command palette or from a Machine, Distribution or setting row of the Build Directory view. It reads `bitbake -e` on the build host, so every value is the one BitBake uses, with the file and line that decided it in BitBake's parse order. **Read Again with BitBake** reads it again.

**State:** modelled with real BitBake 2.8.1 (poky scarthgap with meta-freescale) and 2.18.0 (OE-Core wrynose) over OpenSSH 9.6p1: settings and deciding statements equal to `bitbake -e`; a `local.conf` write predicted to lose to the distribution and kept by BitBake; a distribution write taken; a machine created in require mode; INHERIT on, `:remove` and own-line removal; a stale file refused; a fragment preview equal to the real run. Not run on Windows, against a real build server, on Wind River Linux, on a kas-managed `local.conf`, on BitBake 2.12 and 2.14, or on releases older than scarthgap.

## Settings

The editor shows, each with the value in effect and the statement that decided it:

- MACHINE, DISTRO, DL_DIR, SSTATE_DIR, TMPDIR, BB_NUMBER_THREADS, PARALLEL_MAKE, PACKAGE_CLASSES and EXTRA_IMAGE_FEATURES (a warning when `debug-tweaks` is set: a release image must not have it);
- the INHERIT classes `buildhistory`, `create-spdx`, `cve-check`, `archiver` and `rm_work`, on or off;
- PREMIRRORS, SSTATE_MIRRORS and BB_NO_NETWORK, read-only here (they are changed in [Sources and mirrors](https://neuralinverse.com/docs/modules/embedded-linux/sources-and-mirrors/)).

## Change a setting

1. Pick the new value in the row (machine and distribution choices come from the layers) and choose **Write...**.
2. Pick where to write it: `local.conf` or the product distribution.
3. The confirmation shows the exact lines. When a later statement would still win (for example the distribution setting PACKAGE_CLASSES after `local.conf`), it names that file and line and says BitBake would use that value instead.
4. After the write, BitBake reads the configuration again and the editor shows the value in effect. A file changed on the host after the confirmation was planned is refused.

## Machines and distributions

Machines and distributions are listed per layer with their `require` and `include` chain, the variables each sets and which one is in use. **Create Machine from This...** and **Create Distribution from This...** copy one, or `require` it, into a product layer you pick, after a confirmation. Selecting the new machine then carries the original's overrides.

## Configuration fragments

**Configuration Fragments** lists the build's fragments with `bitbake-config-build` and enables or disables one after a preview on a copy of the configuration. On a BitBake without fragments (scarthgap), the editor says so and lists none.

## Agent tools

Three read-only tools read the configuration, the machines and distributions, and the fragments. Four tools change the build, and each is confirmed with the exact lines.

Next: [BitBake recipes and Variable History](https://neuralinverse.com/docs/modules/embedded-linux/bitbake-recipes/).
