* Implementación del rol de Ansible 'siguldry' para CentOS Stream 10 * Migración del plugin de firmas de Koji Hub a un spooler asíncrono * Modificación de roles para utilizar empaquetamiento RPM nativo de siguldry-pkcs11 * Documentación de decisiones (ADRs) y roadmap en docs/technical/ * Limpieza de binarios locales pesados de PKCS#11 en Ansible Co-developed-by: Gemini AI <renich+gemini@woralelandia.com> Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
3 KiB
Decisión de Diseño: Bloqueo de python-nss y Opciones de Firma
Este registro documenta el hallazgo técnico del bloqueo de compilación de python-nss en CentOS Stream 10 y evalúa las opciones de diseño para implementar la firma de paquetes RPM.
Contexto
Al intentar instalar el sistema de firmas oficial de CentOS Stream (Sigul legacy), encontramos que los paquetes de dependencias críticas python3-nss y python3-fedora no están disponibles en CentOS Stream 10 / EPEL 10.
Al intentar compilar python-nss directamente desde el código fuente de PyPI usando Python 3.12 y GCC 14 en el Hub VM, la compilación falló debido a un error de sintaxis C en el uso de la macro va_start en el archivo src/py_nspr_error.c:
src/py_nspr_error.c:189:23: error: macro "va_start" requires 2 arguments, but only 1 given
189 | va_start(vargs);
| ^
Este error impide la instalación directa del cliente de firmas Sigul heredado en Python.
Opciones de Diseño
Presentamos dos caminos de resolución para el entorno de staging:
Opción A: Reconstruir Sigul Legacy (Homologación Estricta)
Descripción: Descargar el código fuente de python-nss, aplicar un parche en C para corregir el uso de la macro va_start (pasándole el último argumento nombrado del método), compilar el módulo de Python manualmente e instalar el SRPM de sigul heredado de EPEL 9 con la bandera --nodeps.
Pros: Utiliza exactamente el mismo software, cliente CLI y flujo de firma que CentOS Stream usa actualmente.
Contras: Requiere mantener un parche manual en C para una dependencia heredada.
Opción B: Adoptar Siguldry Moderno (Futuro de Fedora/CentOS)
Descripción: Configurar los servicios nativos de siguldry (que ya está disponible como paquete RPM en EPEL 10 por estar escrito en Rust). Dado que el cliente Rust no expone una llamada CLI directa de firma de archivos para PGP, se debe configurar el módulo PKCS#11 (libsiguldry_pkcs11.so) y enlazar rpmsign para que firme mediante este módulo de criptografía seguro.
Pros: Es nativo de CentOS Stream 10, no tiene dependencias de Python rotas, y es la arquitectura moderna elegida por el equipo de infraestructura de Fedora.
Contras: Requiere mayor complejidad de configuración criptográfica en el cliente (PKCS#11).
Decisión de SCM (Git)
Independientemente de la opción elegida para Sigul, se decide añadir restricciones estrictas de SCM en el archivo /etc/koji-hub/hub.conf para forzar que Koji únicamente acepte tareas de compilación provenientes del servidor Git local de MxOS:
AllowedSCMs = git.mx-os.mx:/RPMs/*.git:*:use_common_checkout