efcf6f825f
Endurece y documenta la integración renaser↔brahman tras el piloto mirada-layout. - scripts/check-shared-cores.sh: compila cada núcleo compartido registrado para x86_64-unknown-none. Si un núcleo recobra `std` en silencio (dep descuidada), falla aquí y no semanas después en renaser. Hoy cubre mirada-layout. - docs/renaser-integracion.md: por qué renaser es un workspace aparte, el modelo núcleos-duales/superficies-por-plataforma, cómo se hace no_std un núcleo, y el estado del plan por etapas. Paso 2 (converger el CAS) DESCARTADO tras leer el código: arje-cas (blobs SHA256 sobre FS), renaser/almacen (DAG blake3+postcard sobre virtio-blk) y minga-core (Merkle-AST con hash estructural) son tres capas distintas, no una duplicación — converger impondría una abstracción equivocada. Razonado en el doc. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
61 lines
2.3 KiB
Bash
Executable File
61 lines
2.3 KiB
Bash
Executable File
#!/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
|