feat: guardián no_std de núcleos compartidos + doc de integración renaser
1#!/usr/bin/env bash
2# =============================================================================
3# brahman :: check-shared-cores.sh — guardián no_std de los núcleos compartidos
4# -----------------------------------------------------------------------------
5# Algunos crates de brahman son NÚCLEOS COMPARTIDOS: lógica pura que también
6# compila el kernel bare-metal de renaser (ver docs/renaser-integracion.md).
7# Para seguir siéndolo deben permanecer `no_std` — y eso se rompe en silencio
8# con sólo añadir una dependencia que arrastre `std`.
9#
10# Este script es la red de seguridad: compila cada núcleo registrado para
11# `x86_64-unknown-none` (el target del kernel de renaser). Si un núcleo
12# recobró `std`, la compilación falla aquí y no semanas después en renaser.
13#
14# Uso: ./scripts/check-shared-cores.sh
15# Sale 0 si todos los núcleos compilan no_std; 1 si alguno falla.
16# =============================================================================
17set -euo pipefail
18
19# --- Núcleos compartidos registrados -----------------------------------------
20# Al promover un crate a núcleo compartido (hacerlo `no_std` y enlazarlo desde
21# renaser), añádelo a esta lista. Es el contrato: lo que está aquí, renaser lo
22# puede consumir; mantenerlo no_std es obligatorio.
23CORES=(
24 mirada-layout # motor de teselado del compositor (Fase 8 de renaser)
25)
26
27TARGET="x86_64-unknown-none"
28
29cd "$(dirname "$0")/.."
30
31echo "guardián no_std — núcleos compartidos brahman ↔ renaser"
32echo "target bare-metal: ${TARGET}"
33echo
34
35# El target bare-metal debe estar instalado para el toolchain activo.
36if ! rustup target list --installed 2>/dev/null | grep -qx "${TARGET}"; then
37 echo "instalando el target ${TARGET}…"
38 rustup target add "${TARGET}"
39fi
40
41fallos=0
42for core in "${CORES[@]}"; do
43 printf ' %-20s ' "${core}"
44 if cargo build -q -p "${core}" --target "${TARGET}" 2>/tmp/check-core-"${core}".log; then
45 echo "ok — compila no_std"
46 else
47 echo "FALLA — recobró std o no compila bare-metal"
48 sed 's/^/ /' /tmp/check-core-"${core}".log
49 fallos=$((fallos + 1))
50 fi
51done
52
53echo
54if [ "${fallos}" -eq 0 ]; then
55 echo "todos los núcleos siguen siendo no_std (${#CORES[@]}/${#CORES[@]})."
56 exit 0
57else
58 echo "${fallos} núcleo(s) rompieron la garantía no_std."
59 exit 1
60fi