build: lazy dependencies — a build loads only what it ships
The 13 /test fixtures and the acpi/fdt discovery pair are .lazy in the root zon, resolved with b.lazyDependency only when a build actually bundles them: a plain `zig build` neither compiles the fixtures nor loads their build files, and only the -Ddiscovery-selected package ever loads. Fixture packages are uniform (dependency name = artifact name = boot-path leaf), so the bundled list shrinks to a name loop. Production manifest byte-identical; the -Dtest-case manifest carries the same 13 entries in the same order; -Ddiscovery=fdt exercises the lazy fdt path. Discharges the plan's deferred what-this-buys #4.
This commit is contained in:
@@ -9,7 +9,9 @@ named "discovery" that the root's -Ddiscovery picks between), and phase 3 (the
|
||||
root split into `build/images.zig` + `build/qemu.zig`; the root `build.zig` is
|
||||
~460 lines of orchestration, down from ~1,250). Every phase landed green: unit
|
||||
tests, the QEMU suite at parity with main, boot-image file list unchanged.
|
||||
Still future: `lazyDependency` for image-specific builds (What-this-buys #4).
|
||||
The `lazyDependency` payoff (What-this-buys #4) is in too: the /test fixtures
|
||||
and the unselected discovery package are lazy — a build loads and compiles
|
||||
only what it ships.
|
||||
|
||||
## Why
|
||||
|
||||
@@ -76,7 +78,9 @@ Rules:
|
||||
stability testing in isolation.
|
||||
3. Adding a binary = adding a directory (source + two small files), not editing
|
||||
three places in a 1,250-line file.
|
||||
4. Later: `lazyDependency` lets an image target build only what it ships.
|
||||
4. `lazyDependency` lets an image target build only what it ships: the /test
|
||||
fixtures resolve only under -Dtest-case, and only the -Ddiscovery-selected
|
||||
discovery package ever loads.
|
||||
|
||||
## Phases
|
||||
|
||||
|
||||
Reference in New Issue
Block a user