Files
RedBear-OS/scripts/validate-collision-log.sh
T
vasilito d26675708e Phase 4: RAM-disk boot, recipe catalog, collision validation
L1: Add make qemu-ram target — copies disk image to host tmpfs before
    QEMU boots, eliminating host disk I/O during OS runtime.
    Usage: make qemu-ram CONFIG_NAME=redbear-full QEMU_MEM=12288

L2: Create local/recipes/AGENTS.md — comprehensive catalog of all 165
    custom recipes across 15 categories with descriptions.

L3: CollisionTracker already fully implemented and wired into installer
    (recipes/core/installer/source/src/collision.rs, 267 lines).

L4: Add scripts/validate-collision-log.sh to make validate target —
    scans build logs for [COLLISION-ERROR]/[COLLISION-WARN] markers
    from the runtime CollisionTracker.
2026-05-28 18:16:48 +03:00

46 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# validate-collision-log.sh — Check build output for CollisionTracker findings
#
# Scans the build directory for any log files containing CollisionTracker
# output ([COLLISION-ERROR] or [COLLISION-WARN] markers). The runtime
# CollisionTracker runs during image assembly in redox_installer.
#
# Exit codes:
# 0 — No collision errors found
# 1 — Collision errors detected
set -euo pipefail
build_dir="${1:?Usage: validate-collision-log.sh <build-dir>}"
errors=0
warnings=0
if [ -d "$build_dir" ]; then
while IFS= read -r logfile; do
file_errors=$(grep -c '\[COLLISION-ERROR\]' "$logfile" 2>/dev/null || true)
file_warnings=$(grep -c '\[COLLISION-WARN\]' "$logfile" 2>/dev/null || true)
if [ "$file_errors" -gt 0 ] || [ "$file_warnings" -gt 0 ]; then
echo " $logfile: $file_errors error(s), $file_warnings warning(s)"
errors=$((errors + file_errors))
warnings=$((warnings + file_warnings))
fi
done < <(find "$build_dir" -name '*.log' -type f 2>/dev/null)
fi
echo "=== CollisionTracker log validation ==="
echo " Errors: $errors, Warnings: $warnings"
if [ "$errors" -gt 0 ]; then
echo "FAILED: $errors collision error(s) in build logs" >&2
echo " The CollisionTracker detected init service or environment file collisions." >&2
echo " Fix: Move config [[files]] init services from /usr/lib/init.d/ to /etc/init.d/" >&2
exit 1
fi
if [ "$warnings" -gt 0 ]; then
echo "WARN: $warnings non-critical collision(s) detected (not blocking)"
fi
echo "PASSED: No collision errors"