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.
Your own layers
Section titled “Your own layers”Create a new layer in the workspace:
bitforge --add-layer sensorsThis 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):
bitforge --remove-layer sensorsAdding upstream dependencies
Section titled “Adding upstream dependencies”Add one or more upstream layers with --dependency-add and a spec:
bitforge --dependency-add https://git.openembedded.org/meta-openembedded#meta-oe,meta-python,meta-networkingBitForge 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.
Dependency spec syntax
Section titled “Dependency spec syntax”<giturl>[@<ref>][#<layer>[@<ref>][,<layer>…]]| Part | Meaning |
|---|---|
<giturl> | Repository to clone (required). |
@<ref> after the URL | Default 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/layer | A nested layer path; the last segment becomes the layer name. |
@<ref> after a layer | Per-layer ref that overrides the repo default. |
A ref is one of:
| Ref | Selects |
|---|---|
@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.
Examples
Section titled “Examples”# Whole repo as one layer, tracking the workspace releasebitforge --dependency-add https://git.yoctoproject.org/meta-raspberrypi
# Several layers from one repo on the scarthgap branchbitforge --dependency-add https://git.openembedded.org/meta-openembedded@b:scarthgap#meta-oe,meta-python
# Pin a single layer to a tagbitforge --dependency-add https://github.com/rust-embedded/meta-rust-bin#meta-rust-bin@t:scarthgap
# Per-layer refs override the repo defaultbitforge --dependency-add https://example.org/vendor-bsp@b:main#meta-bsp,meta-bsp-extra@c:0a1b2c3The 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"Removing a dependency
Section titled “Removing a dependency”bitforge --dependency-remove meta-openembeddedThis drops the [dependency.<name>] block, removes it from the lockfile and
bblayers.conf, and deletes its clone from ForgeSource/.
The lockfile
Section titled “The lockfile”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.