Files
RedBear-OS/src
vasilito 1a291fbb95 cookbook: add cookbook_apply_patches helper for Rule 2 external patches (v6.0 2026)
Per local/AGENTS.md Rule 2 (NO OVERLAY-STYLE PATCHES — AMENDED 2026),
big external projects (mesa, libdrm, wayland, qt, KF6, KWin, SDDM,
llvm, libepoxy, pipewire, wireplumber) apply their Red Bear edits as
external patches in local/patches/<component>/[0-9]*.patch on top of
the upstream checkout. Recipes for these projects previously inlined
the same 7-line bash loop (`cd $COOKBOOK_SOURCE; for p in
.../*.patch; do git apply ...; done; cd $COOKBOOK_BUILD`).

The cookbook_apply_patches helper centralizes this loop and adds
three quality improvements over the inline version:

  1. Idempotence: each patch is checked with `git apply --reverse
     --check` before applying. If the patch is already applied (e.g.
     a partial re-cook after a previous successful build), the helper
     skips it instead of failing with 'patch already applied'.
  2. Failure accounting: applied/skipped/failed counts are reported
     at the end of the run, so a single failed patch doesn't silently
     abort the entire build chain.
  3. Single source of truth: any future change to the patch application
     semantics (e.g. supporting 3-way merges, --3way, or a different
     check algorithm) happens in one place, not across 12+ recipes.

The helper is loaded into every recipe's build environment via the
existing cookbook shell-script injection in src/cook/script.rs and is
called as:

    cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"

This commit is the cookbook-side change. The 4 existing Rule 2
migration recipes (mesa, libdrm, pipewire, wireplumber) are refactored
in the next commit to call this helper instead of inlining the loop.
2026-06-10 01:06:27 +03:00
..