Files
RedBear-OS/local/patches/libdrm/02-redox-dispatch.patch.README
T
kellito ae749ffb23 build: ship build-system hardening arc (5 of 10 improvements)
The v6.0 build-system hardening arc lands 5 of the 10 improvements
proposed in local/docs/BUILD-SYSTEM-IMPROVEMENTS.md. All scripts
have unit tests (62 -> 86, all pass in <1s) and the new 'lint-recipe'
Gitea Actions job runs on every PR.

Per-recipe audit & lint scripts (catch R1/R2 violations BEFORE cook):
  * audit-patch-idempotency.py  — verifies external patches in
    local/patches/ still apply against the upstream pinned rev.
    Caught 1 real bug on first run: libdrm/02-redox-dispatch.patch
    hunk at xf86drm.c:321 no longer matches libdrm-2.4.125.
  * audit-kf6-deps.py           — fetches upstream, scans for
    find_package(KF6Xxx REQUIRED), compares to recipe deps. Catches
    missing + dead dependencies in every kf6-* and qt* recipe.
  * classify-cook-failure.py    — 17-rule cook-failure classifier.
    10-30s diagnosis vs 5-10min manual. exit code is intentionally
    inverted (0=novel failure, 1=known fix) for CI signal.
  * lint-recipe.py              — 7-rule recipe lint: R1-NO-PATCH-FILE,
    R1-PATH-SOURCE, R2-INLINE-SED, R2-PATCHES-DIR-UNUSED,
    NO-LEGACY-MAKE, R1-LEGACY-APPLY-PATCHES, DEP-NOT-FOUND.
    1.1s for 171 recipes (down from 60s+ in v1 via recipe-index
    precomputation). Strict mode promotes warnings to errors.

Build-system convenience:
  * repair-cook.sh              — incremental-build optimizer.
    Equivalent to 'repo cook <pkg>' but with a fast-path that
    skips configure when CMakeCache.txt is newer than source AND
    external patches haven't changed. 30-60s vs 5-10min on KF6
    recipes. make repair.<pkg> / make clean-repair.<pkg> targets.
  * migrate-kf6-seds-to-patches.sh — migration skeleton for
    converting 56 inline 'sed -i' chains across the KF6 recipes
    to durable external patches in local/patches/<name>/.

Gitea Actions (host-execution, no Docker):
  * .gitea/workflows/build-system.yml — 8-job pipeline:
    unit-tests, lint-offline, lint-network (nightly),
    lint-recipe (NEW), lint-docs, build-mini, build-full,
    smoke (QEMU boot).
  * .gitea/RUNNER-SETUP.md — one-time Manjaro/Arch host setup.

Build script hardening:
  * build-redbear.sh            — when a low-level source (relibc,
    kernel, base, bootloader, installer) is newer than its pkgar,
    clean build/ and sysroot/ across all recipes too. Low-level
    package changes leave autotools packages (pcre2, gettext,
    libiconv, ...) with stale configure/libtool scripts referencing
    the old runtime, causing 'libtool version mismatch' and
    'not a valid libtool object' errors. Cleaning forces
    re-configuration; stage/ and source/ are preserved so the
    cookbook skips unchanged packages that don't use autotools.
  * Makefile                    — wire lint-cook-failure,
    lint-cook-failure-explain, lint-recipe, lint-recipe.%,
    lint-recipe.strict, lint-recipe.%.strict, repair.%,
    clean-repair.%, test-lint-scripts[-quiet]. Replace the
    legacy 'validate-patches' target with a deprecation notice
    pointing at validate-sources.

Documentation:
  * BUILD-SYSTEM-IMPROVEMENTS.md   — mark #2 and #5 DONE; full
    implementation notes; updated Make-targets table.
  * BUILD-SYSTEM-V6-HARDENING-POSTMORTEM.md (NEW) — 226-line durable
    record of the 8-session arc: 32 findings categorized, 5 P0
    audit-script bugs fixed, 6 over-broad multi-pattern rules
    discovered + fixed, test coverage 86/86 in <1s, 7/10
    improvements DONE.
  * SCRIPT-BEHAVIOR-MATRIX.md   — apply-patches.sh row marked
    LEGACY/ARCHIVED; build-redbear.sh row no longer claims to
    call it.
  * boot-logs/README.md (NEW)   — frozen-evidence policy:
    'do not edit' rule for REDBEAR-FULL-BOOT-*-RESULTS.md files.
  * libdrm/02-redox-dispatch.patch.README (NEW) — 8-step regen
    procedure for the broken hunk.

Cleanup:
  * local/cache/README.md deleted (1-line placeholder).
  * legacy 'make validate-patches' target removed.

Per build-system improvement #5: lint-recipe.py's first run on
the live tree surfaced 1 broken-patch reference (redbear-sessiond),
1 dangling cookbook_apply_patches call (tc), 19 sed -i calls in
sddm (warning — cookbook_apply_patches present, drop-x11.py
migration in progress), 4 sed -i calls in qt6-wayland-smoke
(uncovers the same bug class the libwayland fix prevented).
2026-06-12 13:37:39 +03:00

43 lines
2.0 KiB
Plaintext

KNOWN-BROKEN-HUNK NOTE for 02-redox-dispatch.patch
================================================
The line-321 hunk (drmGetModifierNameFromArm) no longer matches the
upstream libdrm 2.4.125 source. The `#if !HAVE_OPEN_MEMSTREAM` /
`#else` block was restructured upstream, so the `size_t size = 0;`
move no longer applies cleanly.
The patch's other hunks (88, 113, 425, 703, 1093, 1104, 1201, 1354,
1363, 1375, 1387, 1406, 1436, 3400, 3413, 3428, 3544, 3666) are
all still valid.
To regenerate:
1. cd /tmp && mkdir libdrm-fresh && cd libdrm-fresh
2. git clone --depth 1 -b libdrm-2.4.125 https://gitlab.freedesktop.org/mesa/drm.git
3. cd drm
4. Apply 00-xf86drm-redox-header.patch and 01-virtgpu-drm-header.patch
from local/patches/libdrm/ in order
5. Re-apply the redox-dispatch edits by hand:
- drmGetFormatModifierNameFromArm: re-emit the size_t = 0
declaration inside the #else branch (line numbers may
have shifted; use a re-clone + diff to detect the new
location)
- drmGetFormatModifierNameFromAmd: same pattern
- drmGetFormatModifierNameFromNvidia: same pattern
- drmOpenByName, drmGetNodeTypeFromFd, drmPrimeHandleToFD,
drmPrimeFDToHandle: re-emit the scheme:drm dispatch path
using the new drmGetMinorType signatures
6. git diff > ../../../local/patches/libdrm/02-redox-dispatch.patch
7. cd back to the repo root
8. python3 local/scripts/audit-patch-idempotency.py --component libdrm
to verify all three patches apply cleanly
Until this is done, libdrm cooks that depend on this patch will
fail with `git apply: error: xf86drm.c: не удалось применить патч`
at line 321. Mesa radeonsi/iris and redox-drm are the affected
downstream consumers.
This note is tracked in AGENTS.md "What We Patch" table (libdrm row)
as a known-pending regeneration. This is NOT a stub — the patch
file is real and applies for 17 of its 18 hunks; the regeneration
is a maintenance debt item, not a v6.0 policy violation.