← Lab
VJML / LAB
2026.10 ACTIVE

Entornos limpios para construir ports

Infrastructure / Experiments

Contexto

Construir un paquete correctamente en el sistema de desarrollo no significa necesariamente que el port sea correcto.

El entorno puede contener dependencias instaladas previamente, configuraciones locales o artefactos de builds anteriores que oculten problemas que aparecerían inmediatamente en una instalación limpia.

prt-snapshot nace para reducir esa incertidumbre.

Objetivo

Crear entornos aislados y desechables donde poder construir y validar ports de CRUX partiendo de un estado conocido.

Host system
    ↓
Snapshot
    ↓
Clean environment
    ↓
Port + dependencies
    ↓
Build
    ↓
Validation

El entorno deja de ser una variable implícita del proceso y pasa a formar parte de la prueba.

El problema del sistema de desarrollo

Un sistema utilizado diariamente acumula estado.

Paquetes instalados, librerías, herramientas y configuraciones pueden hacer que un build funcione por razones que no están declaradas en el propio port.

Esto resulta especialmente problemático al validar dependencias.

Un paquete puede compilar correctamente no porque su definición sea completa, sino porque la dependencia que falta ya estaba instalada en el host.

Aislamiento

La estrategia consiste en realizar la prueba dentro de un entorno controlado en lugar de intentar limpiar continuamente el sistema principal.

El ciclo puede repetirse tantas veces como sea necesario:

prepare
   ↓
build
   ↓
inspect
   ↓
discard
   ↓
repeat

Esto hace que romper el entorno durante una prueba deje de ser un problema.

Si el experimento falla, se descarta y se vuelve a empezar desde un estado conocido.

Reproducibilidad

El objetivo no es conseguir reproducibilidad binaria perfecta.

Lo importante aquí es reducir las diferencias introducidas por el entorno y conseguir que dos pruebas partan de unas condiciones suficientemente conocidas.

Esto permite responder preguntas mucho más útiles:

  • ¿están declaradas todas las dependencias?
  • ¿el port funciona desde un entorno limpio?
  • ¿el resultado depende accidentalmente del host?
  • ¿podemos repetir la prueba después de modificar el port?

Evolución

La herramienta ha ido endureciéndose a partir de su propio uso.

Trabajar con snapshots, bases de datos de paquetes y entornos temporales introduce también sus propios problemas: permisos, estado residual, rutas y operaciones que deben ser seguras incluso cuando una ejecución anterior no terminó como estaba previsto.

Por eso parte del desarrollo consiste en aplicar a la propia herramienta el mismo principio que intenta proporcionar: partir de estados conocidos y evitar depender de condiciones implícitas.

Uso

prt-snapshot forma parte del flujo utilizado para probar ports antes de considerarlos suficientemente validados.

No sustituye al sistema de paquetes ni al proceso de construcción de CRUX. Proporciona una capa alrededor de ellos para hacer las pruebas más controladas y repetibles.

Estado

Activo.

La herramienta continúa evolucionando a medida que aparecen nuevos casos reales durante la construcción y validación de ports.