Commit Graph

5 Commits

Author SHA1 Message Date
vasilito e0590a0b56 kde/kf6-extra-cmake-modules: rebase to 6.28.0 (ECM) + teach version parser set(VERSION)
kf6-kcoreaddons 6.28.0 requires ECM >= 6.28.0 but the vendored ECM source/ was
still 6.10.0: the sync engine skipped it because ECM's version marker is a bare
set(VERSION "X.Y.Z") that the parser didn't recognize (only KF_VERSION /
PROJECT_VERSION / RELEASE_SERVICE_VERSION). Re-lay ECM from its 6.28.0 source.tar
(pure cmake modules, no Redox port) and teach both the sync engine and the
validator to read set(VERSION) so this class is caught, not silently skipped.
2026-08-01 08:07:00 +03:00
vasilito 1c8858d14d versioning: parse Plasma PROJECT_VERSION + KDE Gear RELEASE_SERVICE_VERSION markers
The 6 Plasma modules (breeze/kdecoration/kf6-kwayland/kglobalacceld/kwin) and
konsole were 'no-marker(skip)' because src_version/the validator only knew KF's
KF_VERSION. Now both also read set(PROJECT_VERSION) (Plasma) and the split
RELEASE_SERVICE_VERSION_MAJOR/MINOR/MICRO (KDE Gear), so these vendored modules
are version-checked and rebasable. Test E23.
2026-08-01 00:50:26 +03:00
vasilito 6c25f4dd06 build system: actual code marker wins over the .redbear-src-version stamp
9th silent-failure bug: the version stamp was checked BEFORE the real code marker
(Qt .cmake.conf / KDE KF_VERSION). A code-only revert leaves the stamp stale, and
the stale stamp then reported the module 'consistent' -> the engine skipped a
needed rebase and the validator false-passed a divergent tree. Both now check the
authoritative code marker first and use the stamp only as a fallback for
marker-less trees. The validator also learned KDE's KF_VERSION marker. Test E21.
2026-07-31 22:55:58 +03:00
vasilito 8413b69334 build system: harden + regression-test the versioning machinery
Edge-case suite (local/scripts/test-versioning-machinery.sh, 27 cases, zero
network via file:// tarballs) covering the validator and the sync engine.
It found and fixed three silent-failure bugs — the exact class the user flagged:
 - sync engine used 'rsync -a --delete' (size+mtime quick-check): a changed file
   of identical size with a coincidental mtime was skipped, leaving stale content
   in source/. Now uses --checksum (content comparison).
 - apply_patch relied on patch's default fuzz: a patch whose context no longer
   matched the new upstream was force-fitted instead of rejected. Now --fuzz=0
   (exact context; line offsets still allowed).
 - decorrupt collapsed ANY run of identical lines, mangling legitimate paired
   lines; now only collapses the corruption pattern (runs >=4).
Also: unknown-version recipes are skipped (never clobber a ported tree like
mesa), and grep patterns use [[:space:]] for portability.
2026-07-31 20:33:10 +03:00
vasilito 27274403da build system: systematic versioning machinery for external recipes
Root cause of the Qt 6.11.0/6.11.1 and KDE 6.10.0/6.28.0 divergences: a version
bump rewrote recipe tar=/blake3= but never propagated into the vendored source/
tree (the actual build input), and nothing caught the resulting drift.

Adds the missing pieces (see local/docs/VERSIONING.md):
 - sync-recipe-source.sh: propagation engine — rebases a vendored source/ onto
   the recipe's declared version (pristine + patches + captured baked delta),
   with baked-shim preservation and corruption drop; reports patches/shims that
   need a manual rebase instead of applying with fuzz.
 - verify-external-source-versions.sh: preflight gate (build-preflight.sh Phase
   1.0C, REDBEAR_SKIP_EXTERNAL_SOURCE_CHECK) that fails loudly on recipe-vs-
   source-vs-tarball version divergence — the tar-recipe analogue of
   verify-fork-functions.sh.
 - bump-graphics-recipes.sh: now calls the sync engine after a bump, so a bump
   can never again silently no-op on a vendored recipe.
 - source/.redbear-src-version stamp; seeded for the corrected qt modules.
2026-07-31 20:20:53 +03:00