mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-28 09:11:11 -07:00
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
77 lines
2.3 KiB
Markdown
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).
|