config: add tlc to redbear-mini and redbear-full; create recipe symlink

TLC (Twilight Commander) was missing from both ISO configs. Added
tlc = {} to [packages] in redbear-mini.toml and redbear-full.toml.
Created missing symlink: recipes/tui/tlc -> ../../local/recipes/tui/tlc.
This commit is contained in:
2026-06-19 11:47:25 +03:00
parent 06b316076f
commit ffbe098ef8
102 changed files with 11246 additions and 247 deletions
+55
View File
@@ -0,0 +1,55 @@
#!/usr/bin/env bash
# patch-inclusion-gate.sh — block image creation unless Red Bear patches are wired.
#
# Verifies that:
# 1. Every patch file referenced in recipe.toml exists on disk
# 2. Every patch file in local/patches/ is wired into at least one recipe
#
# Public scripts that create harddrive images or live ISOs must call this before
# invoking `make all`, `make live`, or a direct image target.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
cd "$PROJECT_ROOT"
if [ "${REDBEAR_SKIP_PATCH_INCLUSION_GATE:-0}" = "1" ]; then
echo "WARNING: REDBEAR_SKIP_PATCH_INCLUSION_GATE=1; patch inclusion gate bypassed" >&2
exit 0
fi
errors=0
# Check 1: every patch referenced in recipe.toml must exist on disk
while IFS= read -r recipe_toml; do
recipe_dir="$(dirname "$recipe_toml")"
patch_list=$(grep -oP 'patches\s*=\s*\[([^\]]*)\]' "$recipe_toml" 2>/dev/null | grep -oP '"[^"]+\.patch"' | tr -d '"' || true)
for patch_name in $patch_list; do
patch_path="$recipe_dir/$patch_name"
if [ ! -f "$patch_path" ]; then
echo "ERROR: $recipe_toml references '$patch_name' but file not found at $patch_path" >&2
errors=$((errors + 1))
fi
done
done < <(find recipes local/recipes -name "recipe.toml" -not -path "*/source/*" 2>/dev/null)
# Check 2: every patch in local/patches/ should be wired into at least one recipe
while IFS= read -r patch_file; do
patch_name=$(basename "$patch_file")
component=$(basename "$(dirname "$patch_file")")
wired=$(grep -rl "\"$patch_name\"" recipes/ local/recipes/ --include="recipe.toml" 2>/dev/null | head -1 || true)
if [ -z "$wired" ]; then
echo "WARNING: local/patches/$component/$patch_name is not wired into any recipe.toml" >&2
fi
done < <(find local/patches -name "*.patch" -type f 2>/dev/null)
if [ "$errors" -gt 0 ]; then
echo "ERROR: $errors patch reference(s) broken. Fix before building." >&2
exit 1
fi
echo ">>> Patch inclusion gate passed"
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# Ensure cargo bin (cbindgen, rustup, etc.) is in PATH
case ":${PATH}:" in
*":$HOME/.cargo/bin:"*) ;;
*) export PATH="$HOME/.cargo/bin:$PATH" ;;
esac
# standard
#qemu-system-x86_64 -m 8G --enable-kvm -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive file=/home/kellito/Builds/RedBear-OS/build/x86_64/redbear-mini.iso,format=raw -device virtio-gpu-pci -enable-kvm -serial mon:stdio
# virtio-gl, native CPU, net boost
qemu-system-x86_64 -m 12G -smp 8 -device qemu-xhci -net nic,model=virtio -net user --enable-kvm -cpu host -display gtk,gl=on -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive file=/home/kellito/Builds/RedBear-OS/build/x86_64/redbear-mini.iso,format=raw -device virtio-gpu-pci -enable-kvm -serial mon:stdio
#qemu-system-x86_64 -m 12G -smp 8 -device qemu-xhci -net nic,model=virtio -net user --enable-kvm -cpu host -display gtk,gl=on -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive file=/home/kellito/Builds/RedBear-OS/build/x86_64/redbear-full.iso,format=raw -device virtio-gpu-pci -enable-kvm -serial mon:stdio
#qemu-system-x86_64 -d guest_errors -name "Red Bear OS x86_64" -device qemu-xhci -smp 4 -m 2048 -bios /usr/share/edk2/x64/OVMF.4m.fd -chardev stdio,id=debug,signal=off,mux=on -serial chardev:debug -mon chardev=debug -machine q35 -device ich9-intel-hda -device hda-output -device e1000,netdev=net0,id=nic0 -netdev user,id=net0 -nographic -drive file=build/x86_64/redbear-mini/harddrive.img,format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL -drive file=build/x86_64/redbear-mini/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA -enable-kvm -cpu host 2>&1 | tee /tmp/qemu-boot-full.log | tail -n 100
+45
View File
@@ -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"