Files
emb_cli/boards
Joel Winarske 030efc9588 feat(cross): board library + manifest extends (cross-layer resolution)
Factor the hardware/OS facts out of project manifests into a board library
that ships with emb, and let manifests `extends` it. Resolution merges the
layers: emb board (hardware) <- project (embedder) [<- app, future].

- boards/raspberry-pi.emb.yaml: hardware-only base for rpi{5,4,zero-2w} x
  {bookworm,trixie} — provider, triple, per-OS toolchain+image+partition,
  per-model cpu_flags, base GUI/input/Vulkan stack. Located at runtime via the
  emb_cli package_config (override with EMB_BOARDS_DIR or the resolver arg).
- cross.extends: <board> in a target deep-merges the project layer over the
  named board, recursing for chains. Merge rules: maps deep-merge; cpu_flags
  and backends replace (per-model / complete statement); sysroot.dev_packages
  union (board base + project additions, deduped).
- examples/cross/raspberry-pi-family.emb.yaml now `extends` the boards and
  carries only the project layer (backends, augment, plugin packages) — the
  hardware duplication is gone.
- Fix cross_command_test target names for the expanded example (#51).

Validated: extends resolves in the real CLI via package_config auto-discovery;
--list-targets + --dry-run show hardware-from-board + project overlay; new
resolver tests cover inherit/override/union/replace/unknown-board. 294 pass.

Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
2026-06-19 16:44:45 -07:00
..