fix: find build tools in /usr/sbin regardless of PATH

check-host-deps (and the build scripts themselves) reported build
dependencies as missing even though the packages were installed. Several
tools — debootstrap, sgdisk, losetup, partprobe, mkfs.vfat, grub-install —
live in /usr/sbin or /sbin, which non-root users and CI runners often
don't have on PATH, so `command -v` failed.

- common.sh now prepends /usr/local/sbin:/usr/sbin:/sbin to PATH, so every
  script finds these tools no matter who invokes the build.
- check-host-deps now distinguishes "package not installed" from "installed
  but not on PATH" via dpkg-query, so the message tells you exactly what is
  wrong instead of a misleading "missing package".
This commit is contained in:
Blake Ridgway
2026-08-21 14:02:41 -05:00
parent a27d3fb313
commit 90f1e4cc77
2 changed files with 21 additions and 2 deletions

View File

@@ -37,8 +37,15 @@ MISSING=()
for entry in "${NEEDED[@]}"; do
bin="${entry%%|*}"; pkg="${entry##*|}"
if ! command -v "$bin" >/dev/null 2>&1; then
MISSING+=("$pkg")
warn "missing: $bin (package: $pkg)"
# Distinguish "package not installed" from "installed but not on PATH".
if command -v dpkg-query >/dev/null 2>&1 && \
dpkg-query -W -f='${Status}' "$pkg" 2>/dev/null | grep -q "install ok installed"; then
warn "missing: $bin — package $pkg IS installed but '$bin' is not on PATH (check for /usr/sbin or /sbin in PATH)"
MISSING+=("$pkg") # still require a working resolution before building
else
MISSING+=("$pkg")
warn "missing: $bin (package: $pkg)"
fi
fi
done