#!/usr/bin/env bash # ============================================================================= # brahman :: check-shared-cores.sh — guardián no_std de los núcleos compartidos # ----------------------------------------------------------------------------- # Algunos crates de brahman son NÚCLEOS COMPARTIDOS: lógica pura que también # compila el kernel bare-metal de renaser (ver docs/renaser-integracion.md). # Para seguir siéndolo deben permanecer `no_std` — y eso se rompe en silencio # con sólo añadir una dependencia que arrastre `std`. # # Este script es la red de seguridad: compila cada núcleo registrado para # `x86_64-unknown-none` (el target del kernel de renaser). Si un núcleo # recobró `std`, la compilación falla aquí y no semanas después en renaser. # # Uso: ./scripts/check-shared-cores.sh # Sale 0 si todos los núcleos compilan no_std; 1 si alguno falla. # ============================================================================= set -euo pipefail # --- Núcleos compartidos registrados ----------------------------------------- # Al promover un crate a núcleo compartido (hacerlo `no_std` y enlazarlo desde # renaser), añádelo a esta lista. Es el contrato: lo que está aquí, renaser lo # puede consumir; mantenerlo no_std es obligatorio. CORES=( mirada-layout # motor de teselado del compositor (Fase 8 de renaser) ) TARGET="x86_64-unknown-none" cd "$(dirname "$0")/.." echo "guardián no_std — núcleos compartidos brahman ↔ renaser" echo "target bare-metal: ${TARGET}" echo # El target bare-metal debe estar instalado para el toolchain activo. if ! rustup target list --installed 2>/dev/null | grep -qx "${TARGET}"; then echo "instalando el target ${TARGET}…" rustup target add "${TARGET}" fi fallos=0 for core in "${CORES[@]}"; do printf ' %-20s ' "${core}" if cargo build -q -p "${core}" --target "${TARGET}" 2>/tmp/check-core-"${core}".log; then echo "ok — compila no_std" else echo "FALLA — recobró std o no compila bare-metal" sed 's/^/ /' /tmp/check-core-"${core}".log fallos=$((fallos + 1)) fi done echo if [ "${fallos}" -eq 0 ]; then echo "todos los núcleos siguen siendo no_std (${#CORES[@]}/${#CORES[@]})." exit 0 else echo "${fallos} núcleo(s) rompieron la garantía no_std." exit 1 fi