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.
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user