ReviewOS

home-lang/home-os

Consolidate 11 build-*.sh scripts into one canonical entry

#2
Closed glennmichael123 opened this 9 days ago ·
9 days ago

Context

scripts/ contains 11 different build entry points:

build-all.sh
build-home-simple.sh
build-home-zig.sh
build-home.sh
build-initramfs.sh
build-legacy-boot.sh
build-pi-image.sh
build-pi3-minimal.sh
build-rpi5.sh
build-standalone.sh
build-unified.sh
build.sh

These contradict each other (different paths, different compilers, different output layouts) and no contributor can tell which is the right one. The README points at build-rpi5.sh and kernel/zig build qemu; CLAUDE.md mentions a build-home-zig.sh flow; build.config is consumed by build-unified.sh. Nobody can say which is canonical.

Proposal

  • Pick one orchestrator (scripts/build.sh is the obvious name) with flags:
    ./scripts/build.sh --target=x86_64       # default
    ./scripts/build.sh --target=rpi5
    ./scripts/build.sh --target=rpi3
    ./scripts/build.sh --profile=minimal     # from build.config
    ./scripts/build.sh --profile=desktop
    ./scripts/build.sh --run                 # build + boot in QEMU
    ./scripts/build.sh --iso                 # produce bootable ISO
  • Move the other 10 scripts to scripts/legacy/ with a deprecation banner, OR delete them outright if they're dead code
  • Update README to show only the new entry
  • Update CLAUDE.md to point at the new entry
  • CI uses the new entry exclusively (see separate CI issue)

Why this matters

  • New contributors can't onboard when 11 scripts compete to be "the build"
  • Reduces drift — all build paths share one config-resolution code path
  • Required precondition for meaningful CI

Open questions

  • Some of the legacy scripts (e.g. build-pi-image.sh) might do things the unified one doesn't yet (image creation vs ELF). Need to enumerate the unique outputs each produces before deleting.

Sign in to comment on this issue.