ansible-koji/docs/technical/decisiones/2026-06-16-02-bloqueo_python_nss_opciones_sigul.rst
Rénich Bon Ćirić 89d6f66be8
feat: Integración de Siguldry PKCS#11 y spooler de firmas
* 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>
2026-06-16 10:06:44 -06:00

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