Files
forgefirm/BUILD.md
T
ScottW514 90384350b3 Migrate the build from the Google repo manifest to kas
Replace the repo + default.xml + setup-environment workflow with kas:

- add kas/forgefirm-glowforge.yml (Scarthgap layers pinned, meta-openglow
  as a local sibling) and kas/README.md
- remove default.xml, base/conf/forgefirm-bblayers.conf,
  scripts/setup-environment
- .gitignore the kas-managed layers/ and build caches
- BUILD.md: kas host setup and build instructions
2026-06-19 10:33:45 -04:00

77 lines
2.3 KiB
Markdown

# Build
ForgeFIRM is built with [**kas**](https://kas.readthedocs.io/), which manages
the Yocto layers and pins their versions. This replaces the old Google `repo`
+ `default.xml` workflow. The **forgefirm** repo is the base of the build.
Builds run on a Linux host, or on **WSL2** (officially supported by Yocto —
keep the tree on the native ext4 filesystem, not `/mnt/c`).
## Host setup
On Ubuntu/Debian (including WSL2), install the Yocto host packages and kas:
```console
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential \
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
iputils-ping python3-git python3-jinja2 python3-subunit zstd liblz4-tool file \
locales libacl1 lz4 rsync
sudo locale-gen en_US.UTF-8
pipx install kas # use pipx — Ubuntu 24.04 (PEP 668) blocks `pip install --user`
```
For other distros, see the
[Yocto Project Quick Build](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html).
Do not build as root (the Yocto sanity checks refuse it).
## Get the sources
Clone the repos as siblings (the kas config references `meta-openglow` at
`../meta-openglow` while it is under active Scarthgap migration):
```console
git clone https://github.com/ScottW514/forgefirm.git
git clone https://github.com/ScottW514/meta-openglow.git
git clone https://github.com/ScottW514/kernel-module-glowforge.git
```
```
openglow-forgefirm/
├── forgefirm/ ← base repo, build runs here
├── meta-openglow/
└── kernel-module-glowforge/
```
## Build the image
```console
cd forgefirm
kas build kas/forgefirm-glowforge.yml
```
kas fetches the upstream layers into `forgefirm/layers/`, builds in
`forgefirm/build/`, and produces the bootable image at:
```
forgefirm/build/tmp/deploy/images/glowforge/forgefirm-image-glowforge.wic.gz
```
For exact, reproducible layer versions, generate a lockfile once:
```console
kas lock kas/forgefirm-glowforge.yml
```
See [`kas/README.md`](kas/README.md) for details, the container-build option,
and the Scarthgap migration backlog.
## Write to an SD card
```console
cd build/tmp/deploy/images/glowforge
sudo zcat forgefirm-image-glowforge.wic.gz | dd of=/dev/sdX bs=1M
```
To install onto the factory eMMC (dual-boot with the Glowforge firmware), see
[`INSTALL.md`](INSTALL.md).