build-redbear.sh: pre-cook base/redoxfs/userutils to fix installer "Package base not found"

The boot-ABI invalidation ("relink ONLY the static initfs-critical binaries:
base redoxfs userutils bootstrap") rm's each package's repo pkgar + target to
force a relink. Only relibc was in PRECOOK_PKGS, so only relibc got re-published
via the reliable single-recipe `repo cook` path. base/redoxfs/userutils cook
"successful" inside `make live`'s nonstop graph but lose their stage.toml before
publish, so repo marks them outdated and never publishes base.pkgar — the
installer then fails with `Package PackageName("base") not found` at image
assembly (mk/disk.mk).

Add base/redoxfs/userutils to the pre-cook set (both configs, ordered after
relibc which they depend on). The `[ ! -f repo/$pkg.pkgar ]` guard makes it
zero-cost when they were not invalidated. bootstrap is omitted (part of the
base recipe, not a standalone package).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-29 10:13:49 +09:00
parent 037e0f6a13
commit fade41a09d
+13 -3
View File
@@ -9,7 +9,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# REDBEAR_VERSION (which tracks the OS release derived from the git branch).
# Starts at 1.0 and is bumped AUTOMATICALLY on every change by the pre-commit
# git hook (local/scripts/bump-build-version.sh); do not edit the minor by hand.
BUILD_REDBEAR_VERSION="1.4"
BUILD_REDBEAR_VERSION="1.5"
# ── Colorized output ──────────────────────────────────
# Enabled only on a TTY with NO_COLOR unset, so redirected build logs and CI
@@ -1060,10 +1060,20 @@ if [ "$CONFIG" = "redbear-full" ]; then
# configure fails ("Could not find a package configuration file provided by
# Qt6Qml"), aborting the whole build. Pre-cook the Qt stack IN ORDER, before
# sddm/kwin, so every Qt6 CMake package is cached in the sysroot first.
PRECOOK_PKGS="relibc icu llvm21 libclc mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt qtbase qtshadertools qtdeclarative qtsvg qtwayland sddm redbear-compositor redbear-greeter"
PRECOOK_PKGS="relibc base redoxfs userutils icu llvm21 libclc mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt qtbase qtshadertools qtdeclarative qtsvg qtwayland sddm redbear-compositor redbear-greeter"
else
PRECOOK_PKGS="relibc icu"
PRECOOK_PKGS="relibc base redoxfs userutils icu"
fi
# NB: base/redoxfs/userutils are added to the pre-cook set so the boot-ABI
# "relink ONLY the static initfs-critical binaries" invalidation above
# (which rm's their repo pkgar + target) reliably re-publishes them via the
# single-recipe `repo cook` path — the same recovery relibc already relies on.
# Without this they cook "successful" inside `make live`'s nonstop graph but
# lose their stage.toml before publish (repo marks them outdated -> installer
# fails with `Package "base" not found`). The `[ ! -f repo/$pkg.pkgar ]` guard
# below makes this zero-cost on builds where they were not invalidated.
# bootstrap is intentionally omitted: it is part of the base recipe, not a
# standalone cookable package.
for pkg in $PRECOOK_PKGS; do
if [ ! -f "$PROJECT_ROOT/repo/x86_64-unknown-redox/$pkg.pkgar" ]; then
echo " cooking $pkg..."