Skip to content

Layers & Dependencies

BitForge distinguishes your layers (scaffolded under layers/ and tracked in git) from dependency layers (upstream repositories cloned into ForgeSource/). Both are described in BitForge.toml; BitForge keeps bblayers.conf and BitForge.lock in sync as you change them.

Create a new layer in the workspace:

Terminal window
bitforge --add-layer sensors

This scaffolds layers/meta-sensors, registers it under [[layers]] and adds it to bblayers.conf. Layer names are normalized to the meta- convention.

Remove one (deletes the directory and de-registers it):

Terminal window
bitforge --remove-layer sensors

Add one or more upstream layers with --dependency-add and a spec:

Terminal window
bitforge --dependency-add https://git.openembedded.org/meta-openembedded#meta-oe,meta-python,meta-networking

BitForge clones the repository into ForgeSource/layers/<name>, records it under [dependency.<name>], pins the resolved commit in BitForge.lock and links the selected layers into bblayers.conf.

<giturl>[@<ref>][#<layer>[@<ref>][,<layer>…]]
PartMeaning
<giturl>Repository to clone (required).
@<ref> after the URLDefault ref for every layer in this repo.
#layer,layer,…Which sub-directories to link as layers. Omit to use the repo as a single layer.
path/to/layerA nested layer path; the last segment becomes the layer name.
@<ref> after a layerPer-layer ref that overrides the repo default.

A ref is one of:

RefSelects
@b:<branch>A branch.
@t:<tag>A tag.
@c:<commit>An exact commit.

When no ref is given, BitForge uses the workspace’s yocto_release as the branch.

Terminal window
# Whole repo as one layer, tracking the workspace release
bitforge --dependency-add https://git.yoctoproject.org/meta-raspberrypi
# Several layers from one repo on the scarthgap branch
bitforge --dependency-add https://git.openembedded.org/meta-openembedded@b:scarthgap#meta-oe,meta-python
# Pin a single layer to a tag
bitforge --dependency-add https://github.com/rust-embedded/meta-rust-bin#meta-rust-bin@t:scarthgap
# Per-layer refs override the repo default
bitforge --dependency-add https://example.org/vendor-bsp@b:main#meta-bsp,meta-bsp-extra@c:0a1b2c3

The resulting manifest entry looks like:

[dependency.meta-openembedded.meta-oe]
giturl = "https://git.openembedded.org/meta-openembedded"
branch = "scarthgap"
[dependency.meta-openembedded.meta-python]
giturl = "https://git.openembedded.org/meta-openembedded"
branch = "scarthgap"
Terminal window
bitforge --dependency-remove meta-openembedded

This drops the [dependency.<name>] block, removes it from the lockfile and bblayers.conf, and deletes its clone from ForgeSource/.

BitForge.lock records the exact commit resolved for every dependency layer, so re-cloning on another machine reproduces the same sources even if upstream branches have moved. Commit it alongside BitForge.toml.