Skip to content

Workspace & Projects

A BitForge workspace is a git repository that contains a BitForge.toml manifest. Everything else — the BitBake config, the cloned sources and the build tree — is derived from that manifest so a fresh checkout rebuilds the same project.

Terminal window
bitforge --init my-distro

--init will:

  1. Create the target directory (or use the current one) and initialize a git repository.
  2. Scaffold a starter layer under layers/ compatible with the chosen release.
  3. Write a BitForge.toml manifest and a .gitignore.
  4. Clone BitBake and the base source (OpenEmbedded-core by default) into ForgeSource/.
  5. Generate conf/local.conf and conf/bblayers.conf.

Omit the name to initialize in the current directory:

Terminal window
mkdir my-distro && cd my-distro
bitforge --init

By default the workspace is based on OpenEmbedded-core. Pass --poky with a Yocto release to base it on poky instead — this also clones meta-poky and meta-yocto-bsp and sets DISTRO = "poky" in local.conf:

Terminal window
bitforge --init my-distro --poky scarthgap
BaseCommandLayers cloned
OpenEmbedded-corebitforge —init my-distrometa
pokybitforge —init my-distro —poky <release>meta, meta-poky, meta-yocto-bsp

When no release is given, BitForge uses scarthgap.

PathTracked in git?Purpose
BitForge.tomlYesThe manifest you edit — workspace, layers and dependencies.
BitForge.lockYesExact commit for every dependency layer.
layers/YesYour own layers (the starter layer lives here).
conf/YesGenerated local.conf and bblayers.conf.
ForgeSource/No (git-ignored)Cloned poky/OE-core, BitBake and upstream dependency layers.
build/No (git-ignored)BitBake’s build output (tmp, sstate-cache, downloads).

A freshly initialized OpenEmbedded-core manifest looks like this:

[workspace]
name = "my-distro"
bitbake = "2.8"
yocto_release = "scarthgap"
[[layers]]
name = "meta-my-distro"
path = "layers/meta-my-distro"
priority = 6
[dependency.openembedded-core.meta]
giturl = "https://git.openembedded.org/openembedded-core"
branch = "scarthgap"
  • [workspace] names the project and pins the BitBake and Yocto release.
  • [[layers]] entries are your layers, kept under layers/.
  • [dependency.*] entries are upstream layers cloned into ForgeSource/.

See Configuration for the complete schema, and Layers & Dependencies for how to add more.

BitForge keeps conf/bblayers.conf in sync whenever you change layers or dependencies. Running bitforge in an existing workspace re-validates the sources, ensures BitBake is present and refreshes the generated config before starting the server.