From fade41a09de7dd802f5b656240e4c32111a044ec Mon Sep 17 00:00:00 2001 From: vasilito Date: Wed, 29 Jul 2026 10:13:49 +0900 Subject: [PATCH] build-redbear.sh: pre-cook base/redoxfs/userutils to fix installer "Package base not found" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- local/scripts/build-redbear.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/local/scripts/build-redbear.sh b/local/scripts/build-redbear.sh index 183bf0a5e6..9e435e11ee 100755 --- a/local/scripts/build-redbear.sh +++ b/local/scripts/build-redbear.sh @@ -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..."